ExtractingCoordinatesFromPoint: Difference between revisions

From WeBWorK_wiki
Jump to navigation Jump to search
(New page: <h2>Your title here: PG Code Snippet</h2> <!-- Header for these sections -- no modification needed --> <p style="background-color:#eeeeee;border:black solid 1px;padding:3px;"> <em>Thi...)
 
(added historical tag and gave updated problem link)
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<h2>Your title here: PG Code Snippet</h2>
{{historical}}
 
<p style="font-size: 120%;font-weight:bold">This problem has been replaced with [https://openwebwork.github.io/pg-docs/sample-problems/problem-techniques/ExtractingCoordinatesFromPoint.html a newer version of this problem]</p>
<h2>Extracting coordinates from a Point: PG Code Snippet</h2>


<!--  Header for these sections -- no modification needed -->  
<!--  Header for these sections -- no modification needed -->  


<p style="background-color:#eeeeee;border:black solid 1px;padding:3px;">
<p style="background-color:#eeeeee;border:black solid 1px;padding:3px;">
<em>This code snippet shows the essential PG code to check student answers that are equations.  Note that these are <b>insertions</b>, not a complete PG file.  This code will have to be incorporated into the problem file on which you are working.</em>
<em>This code snippet shows the essential PG code to evaluate antderivative and general antiderivative formulas.  Note that these are <b>insertions</b>, not a complete PG file.  This code will have to be incorporated into the problem file on which you are working.</em>
</p>
 
<p style="background-color:#eeeeee;border:black solid 1px;padding:3px;">
<em>This wiki page is under construction as of 6/13/08.</em>
</p>
</p>


Line 23: Line 30:
<td style="background-color:#ddffdd;border:black 1px dashed;">
<td style="background-color:#ddffdd;border:black 1px dashed;">
<pre>
<pre>
  loadMacros("any macros files that are needed");
loadMacros("MathObjects.pl");
</pre>
</pre>
</td>
</td>
<td style="background-color:#ccffcc;padding:7px;">
<td style="background-color:#ccffcc;padding:7px;">
<p>
<p>  
To do ..(what you are doing)........., we don't have to change the
In the initialization section, we need to include the macros file <code>MathObjects.pl</code>.
tagging and documentation section of the problem file. 
In the initialization section, we need to include the macros file <code>-------.pl</code>.
</p>
</p>
</td>
</td>
Line 42: Line 47:
Context( "Point" );
Context( "Point" );


push( @point, Point( random(1,5,1) , random(-5,-1,1) ) );
push(@point, Point(random(1,5,1), random(-5,-1,1)));
push( @point, Point( random(5,10,1) , random(6,11,1) ) );
push(@point, Point(random(5,10,1), random(6,11,1)));
 
# now we have two points, $point[0] = (x1,y1)
# and $point[1] = (x2,y2).
# the following makes $d1 = x1 - x2, $d2 = y1 - y2
($d1, $d2) = ($point[0] - $point[1])->value;


($d1, $d2) = ($point[0] - $point[1])->value; # $d1 = x1 - x2, $d2 = y1 - y2


# Need to put () around $d1 and $d2 because if $d1 = -6, then -6^2 = -36, not 36, as desired.
$length = Compute("sqrt( ($d1)^2+($d2)^2 )");
$length = Compute("sqrt( ($d1)^2+($d2)^2 )");
$mid = ( $point[1] + $point[0] ) / 2;
$mid = ( $point[1] + $point[0] ) / 2;
Line 54: Line 62:
<td style="background-color:#ffffcc;padding:7px;">
<td style="background-color:#ffffcc;padding:7px;">
<p>
<p>
We don't use <code>Context("Vector") and <code>norm( $point[0] - $point[1] )</code>
In the problem setup section of the file, we put the value of the subtraction of two Points in two variables, <code>$d1</code>, the x coordinate, and <code>$d2</code>, the y coordinate. This is achieved by calling Point's <code>value</code> method, as shown.
to determine length because we don't want to accept an answer like <code>|<5,7>-<7,8>|</code> You could use <code>$length=norm( $point[0] - $point[1] );</code> with the Vector context if you didn't care about accepting answers that are valid in the Vector context.
</p>
<p>Alternative method: If you want to get only one of the coordinates of a Point, you can use the <code>extract</code> method, for example: <code>$x = $point->extract(1);</code>. This gets the first coordinate of <code>$point</code> (x) and assigns it to the variable <code>$x</code>.
</p>
</p>
<p>
<p>
Notes: on using this and related Contexts.
We don't use <code>Context("Vector");</code> and <code>norm( $point[0] - $point[1] )</code> here
to determine length because we don't want to accept an answer like <code>|<5,7>-<7,8>|</code>.
</p>
<p>Alternative method: You can use <code>$length=norm( $point[0] - $point[1] );</code> with <code>Context("Vector");</code> if you want to accept answers that are valid in the Vector context (such as the absolute value of a vector).
</p>
<p>
We need to put parentheses around <code>$d1</code> and <code>$d2</code> in the <code>Compute</code> expression because if <code>$d1 = -6</code>, then <code>-6^2 = -36</code>, not <code>36</code>, as desired. However, if the code is <code>($d1)^2</code> then that evaluates as <code>(-6)^2 = 36</code>, as desired.
</p>
</p>
</td>
</td>
</tr>
</tr>
Line 72: Line 86:


BEGIN_TEXT
BEGIN_TEXT
Consider the two points \( $point[0] \) and \( $point[1] \).
Consider the two points \( $point[0] \)
The distance between them is:\{ $length->ans_rule() \}
and \( $point[1] \).
The distance between them is:
\{ $length->ans_rule() \}
$BR
$BR
The midpoint of the line segment
The midpoint of the line segment

Latest revision as of 13:42, 28 June 2023

This article has been retained as a historical document. It is not up-to-date and the formatting may be lacking. Use the information herein with caution.

This problem has been replaced with a newer version of this problem

Extracting coordinates from a Point: PG Code Snippet


This code snippet shows the essential PG code to evaluate antderivative and general antiderivative formulas. Note that these are insertions, not a complete PG file. This code will have to be incorporated into the problem file on which you are working.

This wiki page is under construction as of 6/13/08.

Problem Techniques Index

PG problem file Explanation
loadMacros("MathObjects.pl");

In the initialization section, we need to include the macros file MathObjects.pl.

Context( "Point" );

push(@point, Point(random(1,5,1), random(-5,-1,1)));
push(@point, Point(random(5,10,1), random(6,11,1)));

# now we have two points, $point[0] = (x1,y1)
# and $point[1] = (x2,y2).
# the following makes $d1 = x1 - x2, $d2 = y1 - y2
($d1, $d2) = ($point[0] - $point[1])->value;


$length = Compute("sqrt( ($d1)^2+($d2)^2 )");
$mid = ( $point[1] + $point[0] ) / 2;

In the problem setup section of the file, we put the value of the subtraction of two Points in two variables, $d1, the x coordinate, and $d2, the y coordinate. This is achieved by calling Point's value method, as shown.

Alternative method: If you want to get only one of the coordinates of a Point, you can use the extract method, for example: $x = $point->extract(1);. This gets the first coordinate of $point (x) and assigns it to the variable $x.

We don't use Context("Vector"); and norm( $point[0] - $point[1] ) here to determine length because we don't want to accept an answer like |<5,7>-<7,8>|.

Alternative method: You can use $length=norm( $point[0] - $point[1] ); with Context("Vector"); if you want to accept answers that are valid in the Vector context (such as the absolute value of a vector).

We need to put parentheses around $d1 and $d2 in the Compute expression because if $d1 = -6, then -6^2 = -36, not 36, as desired. However, if the code is ($d1)^2 then that evaluates as (-6)^2 = 36, as desired.

Context()->texStrings;

BEGIN_TEXT
Consider the two points \( $point[0] \)
and \( $point[1] \).
The distance between them is:
\{ $length->ans_rule() \}
$BR
The midpoint of the line segment
that joins them is:\{ $mid->ans_rule() \}
$BR
END_TEXT

Context()->normalStrings;

The problem text section of the file is as we'd expect.

ANS( $length->cmp );
ANS( $mid->cmp );

As is the answer.

Problem Techniques Index