Difference between revisions of "DynamicImages3"

From WeBWorK_wiki
Jump to navigation Jump to search
Line 85: Line 85:
 
$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);
  +
  +
  +
  +
  +
################
  +
# 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);
  +
  +
  +
  +
 
</pre>
 
</pre>
 
</td>
 
</td>
Line 111: Line 151:
 
$BCENTER
 
$BCENTER
 
\{ image( insertGraph($gr2), height=>300, width=>300, tex_size=>800 ) \}
 
\{ image( insertGraph($gr2), height=>300, width=>300, tex_size=>800 ) \}
  +
$ECENTER
  +
$PAR
  +
$BCENTER
  +
\{ image( insertGraph($gr3), height=>300, width=>300, tex_size=>800 ) \}
 
$ECENTER
 
$ECENTER
 
END_TEXT
 
END_TEXT

Revision as of 23:43, 22 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
#  uses macros provided by WWplot.pm
$gr1 = init_graph(-4,-4,4,4,grid=>[8,8],axes=>[0,0],pixels=>[300,300]);
$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"]);


#  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);




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

Notes: on using this and related Contexts.

BEGIN_TEXT
$BCENTER
\{ image( insertGraph($gr1), height=>300, width=>300, tex_size=>800 ) \}
$ECENTER
$PAR
$BCENTER
\{ image( insertGraph($gr2), height=>300, width=>300, tex_size=>800 ) \}
$ECENTER
$PAR
$BCENTER
\{ image( insertGraph($gr3), height=>300, width=>300, 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