I tried the Gateway quiz with a short quiz I had used to test timing for students in class of 45 - to see if that many students wold slow the Webwork server. I had included an interactive graphics problem, (move vectors to the correct location on a graph).
The graphics part was coded using Geogebra. The problem was that the answers to the graphics part were not recorded. The answers to the submit a number and use the drop-down menu for multiple choice worked OK. But the answer was recorded as if the graphics were totally wrong. The problem worked well when given in a short timed test as a homework type. But the same problem as a Gateway quiz didn't record the graphics answers - it drew the graph and allowed movement of the vectors OK, but when the student submitted no record of the graphic input.
The code is below
## DESCRIPTION
# Problem for 'NCSU ECE451 Lu'.
# WeBWorK problem written by H. J. Trussell, <hjt@ncsu.edu>
# ENDDESCRIPTION
## DBsubject(Electrical Engineering)
## DBchapter(CHAPTER 3 The Synchronous Machine)
## DBsection(NA)
## Institution(North Carolina State University)
## Autho(H. J. Trussell)
## TitleText1('Fundamentals of Applied Electromagnetics')
## AuthorText1('John Grainger, Jr.', 'William Stevenson ')
## EditionText1('1')
## Problem1('3.3')
## Keywords('three-phase synchronous generator')
## Resources()
DOCUMENT();
loadMacros("PG.pl",
"PGstandard.pl", # Standard macros for PG language
"MathObjects.pl",
"PGinfo.pl",
"AppletObjects.pl",
"PGcourse.pl", # Customization file for the course
"parserPopUp.pl",
"AnswerFormatHelp.pl",
"answerHints.pl",
);
TEXT(beginproblem());
Context("Complex");
Context()->flags->set(
tolerance => 0.01,
tolType => "absolute",
);
Context()->variables->are(t=>'Real');
Context()->{format}{number} = "%.4f#";
#Initialize values, to be changed for each question
$Xd = Real(random(1,1.5,0.1)); # pu
#$Va_Mag = Real(random(1,2,0.2)); # V
$Va_Mag = Real(1.0); # V
$Va_Ang = 0;
$Ia1_Mag = Real(random(1,2,0.2)); # A
$Ia1_Ang = Real(random(20,40,5)); # degrees
$Ia2_Mag = Real(random(1,2,0.2)); # A
$Ia2_Ang = 0; # degrees
$Ia3_Mag = Real(random(1,2,0.2)); # A
$Ia3_Ang = -$Ia1_Ang; # degrees
# default values for checking
#$Xd = Real(1.65); $Va_Mag = Real(1); $Ia1_Mag = Real(1); $Ia1_Ang = Real(30); #$Ia2_Mag = Real(1); $Ia3_Mag = Real(1);
# Answer calculation
$Ia1_Ang_rad = Compute($Ia1_Ang*pi/180);
$Ei1 = Compute($Va_Mag*exp(j*$Va_Ang) + $Ia1_Mag*$Xd*exp(j* ($Ia1_Ang_rad + pi/2)));
$I_Xd_prod = Compute($Ia1_Mag*$Xd);
$I_Xd_Ang = Compute($Ia1_Ang + 90);
$Ei1_Mag = Compute(abs($Ei1));
$Ei1_Ang = Compute(arg($Ei1));
$Ei1_Ang_deg = Compute($Ei1_Ang*180/pi);
$Ia2_Ang_rad = Compute($Ia2_Ang*pi/180);
$Ei2 = Compute($Va_Mag*exp(j*$Va_Ang) + $Ia2_Mag*$Xd*exp(j* ($Ia2_Ang_rad + pi/2)));
$I_Xd_prod2 = Compute($Ia2_Mag*$Xd);
$I_Xd_Ang2 = Compute($Ia2_Ang + 90);
$Ei2_Mag = Compute(abs($Ei2));
$Ei2_Ang = Compute(arg($Ei2));
$Ei2_Ang_deg = Compute($Ei2_Ang*180/pi);
$Ia3_Ang_rad = Compute($Ia3_Ang*pi/180);
$Ei3 = Compute($Va_Mag*exp(j*$Va_Ang) + $Ia3_Mag*$Xd*exp(j* ($Ia3_Ang_rad + pi/2)));
$I_Xd_prod3 = Compute($Ia3_Mag*$Xd);
$I_Xd_Ang3 = Compute($Ia3_Ang + 90);
$Ei3_Mag = Compute(abs($Ei3));
$Ei3_Ang = Compute(arg($Ei3));
$Ei3_Ang_deg = Compute($Ei3_Ang*180/pi);
$Xd_Ang_rad_1 = Compute($Ia1_Ang_rad + pi/2);
$answer1 = Real(60*60/(4/2));
$popupA = PopUp(["?", "increase", "decrease","remain the same"], "decrease");
$popupB = PopUp(["?", "increase", "decrease","remain the same"], "increase");
$answer = Compute("($Ia1_Mag,$Ia1_Ang_rad,$Ei1_Mag,$Ei1_Ang)");
@tol=(0.5,pi/60); # Magnitude Tolerance 0.1, Angular Tolerance 3 degrees
@type=(0,1,0,1,0,1); #0 for magnitude value, 1 for angular value in degrees
######################################
# Create link to applet:
###################################
# You can name your applet (anything reasonable :-) )
# Adjust the height and width as desired
# Paste the geogebra parameters in at the bottom of the page just above the
# command end command
# so that they don't get in the way
###################################
$appletName = "ggbfoo";
$applet = GeogebraWebApplet(
code => "geogebra.GeoGebraApplet",
archive => "geogebra.jar",
codebase => findAppletCodebase("geogebra.jar"),
appletName => $appletName,
appletId => $appletName,
submitActionAlias => 'getAppletValues', # default actionAlias
initializeActionAlias => '', # default actionAlias
setStateAlias => 'setXML',
getStateAlias => 'getXML',
setConfigAlias => '',
getConfigAlias => '',
returnFieldName => '',
width => 700, # may want to modify width
height => 700, # may want to modify height
# mayscript => "true",
debugMode => 0, # set debugMode to 0 for no debug
# to 1 to make xml representation visible
# to 2 to add alerts detailing progression
# through the applet
onInit => 'ggbOnInit',
type => 'geogebraweb',
submitActionScript => qq{ getQE('answerBox').value = getAppletValues() },
selfLoading => 1,
params => GEOGEBRA_PARAMS(),# paste parameters in
);
##################################
# Setup GeogebraWebApplet --
###################################
###############################################
#
# For persistence of GeoGebra applet state
# when answers are submitted or page is refreshed.
# Uses JavaScript interface to GeoGebra.
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>
!);
#######################################################
#
# For setting initial values in GeoGebra from WeBWorK
# Uses JavaScript interface to GeoGebra.
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
} else {
setTimeout("setAppletCoefficients()", 1000);
}
} else {
setTimeout("setAppletCoefficients()",1000);
}
}
ww_applet_list["$appletName"].setConfig = function() {setAppletCoefficients()};
</script>
END_SCRIPT
HEADER_TEXT( MODES(TeX=>'', HTML=><<END_SCRIPT ) );
<script language="javascript">
function getAppletValues() {
console.log("getAppletValues() entered");
// get a handle for the applet object
var applet = $appletName;
var Iam = applet.getValue("Iam");
var Iaang= applet.getValue("Iaang");
var Eim = applet.getValue("Eim");
var Eiang= applet.getValue("Eiang");
return(Iam + ',' +Iaang +','+Eim + ',' +Eiang);
}
</script>
END_SCRIPT
BEGIN_TEXT
Find the rotor speed of a 4-pole generator to generate 60Hz 3-phase power: $BR
a) Speed is \{ans_rule(10)\} \(RPM\) \{AnswerFormatHelp("numbers") \} $BR
b) A generator is supplying a 100 MW load. If we increase the load to 105MW, the system frequency (i.e., the rotor speed) will \{$popupA->menu()\} $BR
c)A generator is supplying a 100MW load with a power factor at 1.0. If the power factor drops to 0.9 lagging (power is still 100 MW), the excitation current (\( I_f\)) will \{$popupB->menu()\} $PAR
In the graph below, move point C (\(E_i\)) to (0.44,1.20). Move the red vector (\(Ia\)) to (1.09,0.51). You can move each phasor by clicking on its arrow head and dragging it around. The vector values indicated beside the vectors are represented in polar coordinates, as are the answers in the answer-checker. $BR
END_TEXT
Context()->normalStrings;
###################################
#insert applet into body -- this does not need to be changed
# except to adjust the insertion of the reinitialize_button or
# a hidden AnswerBox
###################################
TEXT($PAR, MODES(TeX=>'geogebraweb code',
HTML=>$applet->insertAll(
debug =>0,
reinitialize_button => 1,
includeAnswerBox=>1,
)));
TEXT( "run SetConfig", q!<script language="javascript">setConfig()</script> !) if $inputs_ref->{ "${appletName}_state"} =~ "restart_applet";
##############################
$showPartialCorrectAnswers = 1;
#ANS($Ei1->cmp());
#ANS($Ei2->cmp());
#ANS($Ei3->cmp());
ANS($answer1->cmp());
ANS($popupA->cmp());
ANS($popupB->cmp());
# NAMED_ANS( 'answerBox' => $answer->cmp(ordered=>1) );
NAMED_ANS( 'answerBox' =>$answer->
cmp(list_checker => sub {
my ($correct,$student,$ansHash,$value) = @_;
my $n = scalar(@$student); # number of student answers
my $score = 0; # number of correct student answers
my @errors = (); # stores error messages
my $i; # loop counters
#
# Loop though the student answers
##
for ($i = 0; $i < $n; $i++) {
my $err,$errt;
my $ith = Value::List->NameForNumber($i+1);
my $p = $student->[$i]; # i-th student answer
my $a = $p->value;
my $q = $correct->[$i]; # i-th student answer
my $b = $q->value;
if ($type[$i]==0){
$err=abs($a-$b)
}
if ($type[$i]==1){
$errt=abs($a-$b);
$err=min($errt,360-$errt);
}
if ($err<$tol[$type[$i]] ) {$score++} else {
push(@errors,"Your $ith point is not correct") unless $ansHash->{isPreview}
}
}
return ($score,@errors);
}));
##############################
# Solution
Context()->texStrings;
BEGIN_SOLUTION;
$PAR
$BBOLD SOLUTION $EBOLD
$PAR
\( E_i \angle 0^{ \circ } = V_a \angle 0^{ \circ } + I_a \angle \theta \times X_d \angle 90^{ \circ } \) $BR
\( = $Va_Mag \angle 0^{ \circ } + $Ia1_Mag \angle \theta \times $Xd \angle 90^{ \circ } \) $BR
\( = $Va_Mag \angle 0^{ \circ } + $I_Xd_prod \angle (90^{ \circ } + \theta) \) $PAR
a) \(\theta = $Ia1_Ang^{ \circ } \) $BR
\( E_i = $Va_Mag \angle 0^{ \circ } + $I_Xd_prod \angle $I_Xd_Ang ^{ \circ }\) $BR
\( E_i = $Ei1 = $Ei1_Mag \angle $Ei1_Ang_deg^{ \circ } \) per unit $PAR
b) \(\theta = $Ia2_Ang^{ \circ } \) $BR
\( E_i = $Va_Mag \angle 0^{ \circ } + $I_Xd_prod2 \angle $I_Xd_Ang2 ^{ \circ }\) $BR
\( E_i = $Ei2 = $Ei2_Mag \angle $Ei2_Ang_deg^{ \circ } \) per unit $PAR
c) \(\theta = $Ia3_Ang^{ \circ } \) $BR
\( E_i = $Va_Mag \angle 0^{ \circ } + $I_Xd_prod3 \angle $I_Xd_Ang3 ^{ \circ }\) $BR
\( E_i = $Ei3 = $Ei3_Mag \angle $Ei3_Ang_deg^{ \circ } \) per unit $PAR
END_SOLUTION
Context()->normalStrings;
sub GEOGEBRA_PARAMS {
my $result = {
showResetIcon=>"false" ,
enableRightClick=>"false" ,
enableLabelDrags=>"false",
showMenuBar=>"false" ,
showToolBar=>"false",
showAlgebraInput=>"false",
useBrowserForJS=>"true",
allowRescaling=>"false",
enableShiftDragZoom=>"false",
#geogebra work sheet link https://ggbm.at/stSsYPfV
ggbbase64=>"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"
};
$result;
}
ENDDOCUMENT();