Difference between revisions of "DynamicImages3"

From WeBWorK_wiki
Jump to navigation Jump to search
Line 55: Line 55:
 
$ymax = random(1,3,1);
 
$ymax = random(1,3,1);
   
  +
#
 
# filled triangle with dark border
 
# filled triangle with dark border
# uses macros provided by WWplot.pm
 
  +
#
$gr1 = init_graph(-4,-4,4,4,grid=>[8,8],axes=>[0,0],pixels=>[300,300]);
+
$gr1 = init_graph(-4,-4,4,4,grid=>[8,8],axes=>[0,0],pixels=>[400,400]);
 
$gr1->new_color("lightgreen",156,215,151); # RGB
 
$gr1->new_color("lightgreen",156,215,151); # RGB
 
$gr1->new_color("darkgreen", 0, 86, 34);
 
$gr1->new_color("darkgreen", 0, 86, 34);
Line 67: Line 68:
   
   
  +
  +
  +
#
  +
# A filled in circle
  +
#
  +
$gr3 = init_graph(-5,-5,5,5,grid=>[10,10],axes=>[0,0],pixels=>[400,400]);
  +
$gr3->new_color("lightblue", 214,230,244); # RGB
  +
$gr3->new_color("darkblue", 100,100,255);
  +
add_functions($gr3,
  +
" sqrt(4-x^2) for x in <-2,2> using color:darkblue and weight:2",
  +
"-sqrt(4-x^2) for x in <-2,2> using color:darkblue and weight:2"
  +
);
  +
$gr3->fillRegion([0.1,0.1,"lightblue"]);
  +
</pre>
  +
</td>
  +
<td style="background-color:#ffffcc;padding:7px;">
  +
<p>
  +
<b>Setup:</b>
  +
We specify that the Context should be <code>......</code>, and define the answer to be a formula.
  +
</p>
  +
<p>
  +
<pre>
 
# filled rectangle with dark border
 
# filled rectangle with dark border
 
# uses some macros directly from GD.pm
 
# uses some macros directly from GD.pm
Line 85: Line 108:
 
$gr2->im->filledRectangle($xminpixel,$yminpixel,$xmaxpixel,$ymaxpixel,$lightblue);
 
$gr2->im->filledRectangle($xminpixel,$yminpixel,$xmaxpixel,$ymaxpixel,$lightblue);
 
$gr2->im->rectangle($xminpixel,$yminpixel,$xmaxpixel,$ymaxpixel,$darkblue);
 
$gr2->im->rectangle($xminpixel,$yminpixel,$xmaxpixel,$ymaxpixel,$darkblue);
 
   
   
Line 121: Line 143:
 
$gr3->im->arc($cxpixel,$cypixel,$dxpixel,$dypixel,0,360,$darkblue);
 
$gr3->im->arc($cxpixel,$cypixel,$dxpixel,$dypixel,0,360,$darkblue);
 
$gr3->im->fillToBorder($cxpixel,$cypixel,$darkblue,$lightblue);
 
$gr3->im->fillToBorder($cxpixel,$cypixel,$darkblue,$lightblue);
 
 
 
 
 
</pre>
 
</pre>
</td>
 
<td style="background-color:#ffffcc;padding:7px;">
 
<p>
 
<b>Setup:</b>
 
We specify that the Context should be <code>......</code>, and define the answer to be a formula.
 
</p>
 
<p>
 
Notes: on using this and related Contexts.
 
 
</p>
 
</p>
   
Line 146: Line 156:
 
BEGIN_TEXT
 
BEGIN_TEXT
 
$BCENTER
 
$BCENTER
\{ image( insertGraph($gr1), height=>300, width=>300, tex_size=>800 ) \}
+
\{ image( insertGraph($gr1), height=>400, width=>400, tex_size=>800 ) \}
 
$ECENTER
 
$ECENTER
 
$PAR
 
$PAR
 
$BCENTER
 
$BCENTER
\{ image( insertGraph($gr2), height=>300, width=>300, tex_size=>800 ) \}
+
\{ image( insertGraph($gr2), height=>400, width=>400, tex_size=>800 ) \}
 
$ECENTER
 
$ECENTER
 
$PAR
 
$PAR
 
$BCENTER
 
$BCENTER
\{ image( insertGraph($gr3), height=>300, width=>300, tex_size=>800 ) \}
+
\{ image( insertGraph($gr3), height=>400, width=>400, tex_size=>800 ) \}
 
$ECENTER
 
$ECENTER
 
END_TEXT
 
END_TEXT

Revision as of 19:46, 23 February 2010

Dynamic Graphic Images, with Filled Regions


This code snippet shows the essential PG code to check student answers that are equations. 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.

Problem Techniques Index

PG problem file Explanation
DOCUMENT();
loadMacros(
"PGstandard.pl",
"PGgraphmacros.pl",
# "PGnumericalmacros.pl", # might be useful
);

TEXT(beginproblem());

Initialization: To do ..(what you are doing)........., we don't have to change the tagging and documentation section of the problem file. In the initialization section, we need to include the macros file -------.pl.


$xmin = random(-3,-1,1);
$xmax = random(1,3,1);

$ymin = random(-3,-1,1);
$ymax = random(1,3,1);

#
#  filled triangle with dark border
#  
$gr1 = init_graph(-4,-4,4,4,grid=>[8,8],axes=>[0,0],pixels=>[400,400]);
$gr1->new_color("lightgreen",156,215,151); # RGB
$gr1->new_color("darkgreen",   0, 86, 34);
$gr1->moveTo($xmin,$ymin);
$gr1->lineTo($xmax,$ymin,"darkgreen",2); # bottom edge
$gr1->lineTo($xmin,$ymax,"darkgreen",2); # hypotenuse
$gr1->lineTo($xmin,$ymin,"darkgreen",2); # left edge
$gr1->fillRegion([$xmin+0.1,$ymin+0.1,"lightgreen"]);




#
#  A filled in circle
#  
$gr3 = init_graph(-5,-5,5,5,grid=>[10,10],axes=>[0,0],pixels=>[400,400]);
$gr3->new_color("lightblue", 214,230,244); # RGB
$gr3->new_color("darkblue",  100,100,255);
add_functions($gr3,
" sqrt(4-x^2) for x in <-2,2> using color:darkblue and weight:2",
"-sqrt(4-x^2) for x in <-2,2> using color:darkblue and weight:2"
);
$gr3->fillRegion([0.1,0.1,"lightblue"]);

Setup: We specify that the Context should be ......, and define the answer to be a formula.

#  filled rectangle with dark border
#  uses some macros directly from GD.pm
#
$gr2 = init_graph(-4,-4,4,4,grid=>[8,8],axes=>[0,0],pixels=>[300,300]);
$lightblue = $gr2->im->colorAllocate(148,201,255);
$darkblue  = $gr2->im->colorAllocate(100,100,255);
#
#  translate from graph coordinates to pixel coordinates
#
$xminpixel = $gr2->ii($xmin);
$xmaxpixel = $gr2->ii($xmax);
$yminpixel = $gr2->jj($ymin);
$ymaxpixel = $gr2->jj($ymax);
# 
#  use filledRectangle and rectangle from GD.pm, accessed via ->im-> 
#
$gr2->im->filledRectangle($xminpixel,$yminpixel,$xmaxpixel,$ymaxpixel,$lightblue);
$gr2->im->rectangle($xminpixel,$yminpixel,$xmaxpixel,$ymaxpixel,$darkblue);



################
#  Graph
#
#  filled circle with dark border
#  uses some macros directly from GD.pm
#
$r = random(1,4,1); # radius

$gr3 = init_graph(-5,-5,5,5,grid=>[10,10],axes=>[0,0],pixels=>[400,400]);
$gr3->lb('reset');
foreach my $i (1..4) {
  $gr3->lb( new Label(-4.7,$i,$i,'black','center','middle'));
  $gr3->lb( new Label(-4.7,-$i,-$i,'black','center','middle'));
  $gr3->lb( new Label($i,-4.7,$i,'black','center','middle'));
  $gr3->lb( new Label(-$i,-4.7,-$i,'black','center','middle'));
}
$gr3->lb( new Label(4.7,0.2,'x','black','center','middle'));
$gr3->lb( new Label(0.2,4.7,'y','black','center','middle'));

$lightblue = $gr3->im->colorAllocate(148,201,255);
$darkblue  = $gr3->im->colorAllocate(100,100,255);
# 
#  use arc() and fillToBorder() from GD.pm, accessed via ->im-> 
#
$cxpixel = $gr3->ii(0); # x-coordinate of center
$cypixel = $gr3->jj(0); # x-coordinate of center
$dxpixel = $gr3->ii($r) - $gr3->ii(-$r); # diameter of ellipse, x-direction
$dypixel = $gr3->jj($r) - $gr3->jj(-$r); # diameter of ellipse, y-direction
#
# 0 to 360 are degrees
$gr3->im->arc($cxpixel,$cypixel,$dxpixel,$dypixel,0,360,$darkblue);
$gr3->im->fillToBorder($cxpixel,$cypixel,$darkblue,$lightblue);

BEGIN_TEXT
$BCENTER
\{ image( insertGraph($gr1), height=>400, width=>400, tex_size=>800 ) \}
$ECENTER
$PAR
$BCENTER
\{ image( insertGraph($gr2), height=>400, width=>400, tex_size=>800 ) \}
$ECENTER
$PAR
$BCENTER
\{ image( insertGraph($gr3), height=>400, width=>400, tex_size=>800 ) \}
$ECENTER
END_TEXT

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


$showPartialCorrectAnswers = 1;

ENDDOCUMENT();

Answer Evaluation: As is the answer.

Problem Techniques Index