Difference between revisions of "GeoGebraApplets"
Line 320: | Line 320: | ||
</code> |
</code> |
||
<pre> |
<pre> |
||
− | <param name="image" |
+ | <param name="image" |
+ | value="http://www.geogebra.org/webstart/loading.gif" /> |
||
<param name="boxborder" value="false" /> |
<param name="boxborder" value="false" /> |
||
<param name="centerimage" value="true" /> |
<param name="centerimage" value="true" /> |
||
<param name="java_arguments" value="-Xmx512m" /> |
<param name="java_arguments" value="-Xmx512m" /> |
||
− | <param name="cache_archive" value="geogebra.jar, |
+ | <param name="cache_archive" value="geogebra.jar, |
− | + | geogebra_main.jar, geogebra_gui.jar, geogebra_cas.jar, |
|
+ | geogebra_export.jar, geogebra_properties.jar" /> |
||
+ | <param name="cache_version" value="3.2.41.0, 3.2.41.0, |
||
+ | 3.2.41.0, 3.2.41.0, 3.2.41.0, 3.2.41.0" /> |
||
<param name="framePossible" value="false" /> |
<param name="framePossible" value="false" /> |
||
<param name="showResetIcon" value="false" /> |
<param name="showResetIcon" value="false" /> |
Revision as of 00:52, 7 November 2010
Your title here: PG Code Snippet
This PG code shows how to write WebWork questions with interactive GeoGebra applets.
PG problem file | Explanation |
---|---|
DOCUMENT(); loadMacros( "PGstandard.pl", "MathObjects.pl", "unionTables.pl", "AppletObjects.pl", "PGcourse.pl", ); $showPartialCorrectAnswers = 1; TEXT(beginproblem()); |
Initialization:
We need to include the macro file |
Context("Numeric")->variables->are(t=>"Real"); $a = random(2,4,1); $b = random(5,8,1); $c = random(1,3,1); $d = random(1,3,1); while ($c == $d) { $d = random(1,3,1); } # $f = Formula("$c / (1+(t-2)^2) + $d / (1+(t-4)^2)"); $F = Formula("$c * arctan(t-2) + $d * arctan(t-4) - $c * arctan(-2) - $d * arctan(-4)"); $Fa = $F->eval(t=>$a); $Fb = $F->eval(t=>$b); $disp = $Fb-$Fa; |
Setup:
The GeoGebra applet displays a graph of
We define the accumulation function |
$appletName = "ggbApplet"; $applet = JavaApplet( code => "geogebra.GeoGebraApplet", archive => "geogebra.jar", codebase => findAppletCodebase("geogebra.jar"), appletName => $appletName, appletId => $appletName, submitActionAlias => 'getXML', # default getXML initializeActionAlias => 'setXML', # default setXML setStateAlias => 'setXML', getStateAlias => 'getXML', setConfigAlias => '', getConfigAlias => '', returnFieldName => '', width => 486, height => 306, mayscript => "true", # 0 = no debug, 1 = xml visible, 2 = add alerts thru applet debugMode => 0, onInit => 'ggbOnInit', type => 'geogebra', # paste parameters in section at the bottom parameter_string => GEOGEBRA_PARAMS(), ); |
GeoGebra Applet Setup:
We use
Since the GeoGebra parameters can be very lengthy, at the end of the PG file we put a new
method called |
$im = image( "graph-c".$c."-d".$d.".png", width=>486, height=>306, tex_size=>900 ); |
PNG Picture Setup:
For each of the six ordered pairs |
HEADER_TEXT( qq! <script language="javascript"> function ggbOnInit(param) { if (param == "$appletName") { applet_loaded(param,1); // report that applet is ready. ww_applet_list[param].safe_applet_initialize(2); } } </script> <noscript>For this question to work properly, you must enable JavaScript, or use another browser (or computer) on which JavaScript works.</noscript> !); |
JavaScript Setup for Persistence of State: For the state of the GeoGebra applet to remain the same when answers are submitted or the page is refreshed, we need a little JavaScript. GeoGebra can interact with other things, like WebWork, by using its JavaScript methods GeoGebra_JavaScript_Methods. |
TEXT( MODES(TeX=>'', HTML=><<END_SCRIPT ) ); <script language="javascript"> function setAppletCoefficients() { var applet=getApplet("$appletName"); // alert("Updating coefficients"); if (typeof(applet)!="undefined") { if (typeof(applet.setValue)!="undefined") { //////////////////////////////////////////////////////////////// // List the values of the parameters to be set in the applet here // Set variables "c" and "d" in GeoGebra to values $c and $d from WebWork applet.setValue("c", $c); applet.setValue("d", $d); } else { setTimeout("setAppletCoefficients()", 1000); } } else { setTimeout("setAppletCoefficients()",1000); } } ww_applet_list["$appletName"].setConfig = function() {setAppletCoefficients()}; </script> END_SCRIPT |
JavaScript Setup for Initial State:
We use JavaScript methods to set the values of the
variables |
Context()->texStrings; BEGIN_TEXT \{ ColumnTable( "The figure shows an interactive graph of velocity \( v(t) \). You can change the value of \( t \) in the graph by clicking and dragging the red dot along the horizontal \( t \)-axis. $BR $BR (a) What is the displacement of the object between \( t = 0 \) and \( t = $a \)? $BR". ans_rule(20). "$BR $BR (b) What is the displacement of the object between \( t = 0 \) and \( t = $b \)? $BR". ans_rule(20). "$BR $BR (c) What is the displacement of the object between \( t = $a \) and \( t = $b \)? $BR". ans_rule(20) , $BCENTER. MODES(HTML=>$applet->insertAll( debug=>0, reinitialize_button=>0, includeAnswerBox=>0,), TeX=>$im). $PAR. "Graph of velocity \( y = v(t) \)". $ECENTER , indent => 0, separation => 30, valign => "TOP" ); \} END_TEXT Context()->normalStrings; |
Main Text:
The problem text section of the file is mostly as we'd expect.
We make use of a |
ANS( Real($Fa) ->cmp(tolerance=>0.11, tolType=>'absolute') ); ANS( Real($Fb) ->cmp(tolerance=>0.11, tolType=>'absolute') ); ANS( Real($disp)->cmp(tolerance=>0.21, tolType=>'absolute') ); |
Answer Evaluation: Standard. |
sub GEOGEBRA_PARAMS { $result = qq{ # For persistence of applet state when answers are submitted <param name="ggbOnInitParam" value="$appletName"/>
<param name="image" value="http://www.geogebra.org/webstart/loading.gif" /> <param name="boxborder" value="false" /> <param name="centerimage" value="true" /> <param name="java_arguments" value="-Xmx512m" /> <param name="cache_archive" value="geogebra.jar, geogebra_main.jar, geogebra_gui.jar, geogebra_cas.jar, geogebra_export.jar, geogebra_properties.jar" /> <param name="cache_version" value="3.2.41.0, 3.2.41.0, 3.2.41.0, 3.2.41.0, 3.2.41.0, 3.2.41.0" /> <param name="framePossible" value="false" /> <param name="showResetIcon" value="false" /> <param name="showAnimationButton" value="true" /> <param name="enableRightClick" value="false" /> <param name="errorDialogsActive" value="true" /> <param name="enableLabelDrags" value="false" /> <param name="showMenuBar" value="false" /> <param name="showToolBar" value="false" /> <param name="showToolBarHelp" value="false" /> <param name="showAlgebraInput" value="false" /> <param name="allowRescaling" value="true" /> }; } COMMENT('MathObject version. Uses GeoGebra applet.'); ENDDOCUMENT(); |
GeoGebra Applet Parameters:
When you export your GeoGebra drawing pad via File -> Export ->> Dynamic worksheet as Webpage (html), you get an html file with source code you can paste directly in here below the commented line |
- POD documentation: nameOfMacro.pl.html
- PG macro: nameOfMacro.pl