Difference between revisions of "DynamicImages3"

From WeBWorK_wiki
Jump to navigation Jump to search
Line 66: Line 66:
 
$gr1->lineTo($xmin,$ymin,"darkgreen",2); # left edge
 
$gr1->lineTo($xmin,$ymin,"darkgreen",2); # left edge
 
$gr1->fillRegion([$xmin+0.1,$ymin+0.1,"lightgreen"]);
 
$gr1->fillRegion([$xmin+0.1,$ymin+0.1,"lightgreen"]);
 
  +
#
  +
# Note: we could fill in any polygon by adding more sides
   
   

Revision as of 19:48, 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"]);
#
# Note: we could fill in any polygon by adding more sides



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