Difference between revisions of "PolarGraph1"

From WeBWorK_wiki
Jump to navigation Jump to search
Line 97: Line 97:
 
$f->domain(0,3.14);
 
$f->domain(0,3.14);
 
$f->steps(90);
 
$f->steps(90);
  +
$f->weight(2);
 
$f->color('darkgreen');
 
$f->color('darkgreen');
$f->weight('2');
 
   
 
$gr->fillRegion([0.5,0.1,'lightgreen']);
 
$gr->fillRegion([0.5,0.1,'lightgreen']);
Line 143: Line 143:
 
<p>
 
<p>
 
<b>Main Text:</b>
 
<b>Main Text:</b>
We use the <code>ColumnTable(column 1, column 2, options)</code> to put the text and graph side-by-side.
+
We use the <code>ColumnTable(column 1, column 2, options)</code> to put the text and graph side-by-side. We join (Perl) strings <code>" "</code> to common PG commands like <code>ans_rule(20)</code> using the string concatenation operator <code> . </code> which is a period. Notice that the commas between column 1, column 2, and the options do not have any periods before them.
 
</p>
 
</p>
 
</td>
 
</td>

Revision as of 21:35, 15 December 2010

Graphing a Parametric or Polar Curve

Click to enlarge

This PG code shows how to graph a parametric curve or polar curve with a shading (a filled region).

  • Download file: File:PolarGraph1.txt (change the file extension from txt to pg when you save it)
  • File location in NPL: FortLewis/Authoring/Templates/PolarGraph1.pg


Templates by Subject Area

PG problem file Explanation

Problem tagging data

Problem tagging:

DOCUMENT();      

loadMacros(
"PGstandard.pl",
"MathObjects.pl",
"PGgraphmacros.pl",
"AnswerFormatHelp.pl",
"unionTables.pl",
);

TEXT(beginproblem());

$refreshCachedImages = 1;

Initialization: We use PGgraphmacros.pl to generate the graph, and unionTables.pl to put the text and the graph side-by-side. We should set $refreshCachedImages = 1; so that changes in the graph will show up (not get stuck by old images in the browser cache).

Context("Numeric")->variables->are(t=>"Real");

$gr = init_graph(-1.1,-1.1,1.1,1.1,axes=>[0,0],size=>[300,300]);

#
#  Define some useful colors
#
$gr->new_color("lightblue", 198,217,253); # RGB
$gr->new_color("darkblue",   77,137,249);
$gr->new_color("lightred",  255,127,127);
$gr->new_color("darkred",   255, 55, 55);
$gr->new_color("lightorange",  255,204,127);
$gr->new_color("darkorange",   255, 153, 0);
$gr->new_color("lightgreen", 187, 255, 153); 
$gr->new_color("darkgreen",    0, 208, 0);

#
#  For a polar curve r = f(t),
#  x = r cos(t) = f(t) cos(t)
#  y = r sin(t) = f(t) sin(t)
#
$x = Formula("cos(5*t) * cos(t)");
$y = Formula("cos(5*t) * sin(t)");


$f = new Fun( $x->perlFunction, $y->perlFunction, $gr );
$f->domain(0,3.14);
$f->steps(90);
$f->weight(2);
$f->color('darkgreen');

$gr->fillRegion([0.5,0.1,'lightgreen']);

Setup: We initialize a graph object named $gr. We define several new named colors which you can use if you want. We construct MathObjects formulas $x and $y for the x- and y-coordinates in terms of the parameter t. Then, we pass these formulas to the Fun routine, converting them to perl subroutines via ->perlFunction, and attach them to the graph object $gr. Then, we set some of the options for the graph of the parametric curve $f. Finally, we fill the region enclosing the point (0.5,0.1) with the color light green.

Context()->texStrings;
BEGIN_TEXT
\{
ColumnTable(
"Find the area enclosed by one petal of the 
rose curve \( r = f(\theta) = \cos(5\theta) \).
$BR
$BR
Area = ".
ans_rule(20).$SPACE.
AnswerFormatHelp("numbers")
,
$BCENTER.
image( insertGraph($gr), width=>300, height=>300 ).
$PAR.
"Graph of \( r = \cos(5\theta) \)".
$ECENTER
,
indent => 0, separation => 30, valign => "TOP"
); 
\}
END_TEXT
Context()->normalStrings;

Main Text: We use the ColumnTable(column 1, column 2, options) to put the text and graph side-by-side. We join (Perl) strings " " to common PG commands like ans_rule(20) using the string concatenation operator . which is a period. Notice that the commas between column 1, column 2, and the options do not have any periods before them.

$showPartialCorrectAnswers = 1;

# intentionally incorrect
ANS( Compute("pi")->cmp() );

Answer Evaluation:

Context()->texStrings;
BEGIN_SOLUTION
${PAR}SOLUTION:${PAR}
Solution explanation goes here.
END_SOLUTION
Context()->normalStrings;

COMMENT('MathObject version.');

ENDDOCUMENT();

Solution:

Templates by Subject Area