--- loncom/homework/functionplotresponse.pm 2011/11/21 20:20:48 1.82 +++ loncom/homework/functionplotresponse.pm 2011/11/21 20:48:50 1.83 @@ -1,7 +1,7 @@ # LearningOnline Network with CAPA # Functionplot responses # -# $Id: functionplotresponse.pm,v 1.82 2011/11/21 20:20:48 www Exp $ +# $Id: functionplotresponse.pm,v 1.83 2011/11/21 20:48:50 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1528,6 +1528,34 @@ sub sumcheck { $sumy+=$ry; } &addlog("Sum vector ($sumx,$sumy)"); + if ($length ne '') { + &addlog("Checking length $length with error $lengtherror"); + $length=&Apache::run::run($length,$safeeval); + &addlog("Evaluated to $length"); + my $thislength=&vectorlength($sumx,$sumy); + &addlog("Actual length $thislength"); + if (abs($length-$thislength)>$lengtherror) { + &setfailed($label); + return 0; + } + } + if ($angle ne '') { + &addlog("Checking angle $angle with error $angleerror"); + $angle=&Apache::run::run($angle,$safeeval); + &addlog("Evaluated to $angle"); + my $thisangle=&vectorangle($sumx,$sumy); + &addlog("Actual angle $thisangle"); + my $anglediff=abs($thisangle-$angle); + &addlog("Angle difference: $anglediff"); + if ($anglediff>360.-$anglediff) { + $anglediff=360.-$anglediff; + } + &addlog("Smallest angle difference: $anglediff"); + if ($anglediff>$angleerror) { + &setfailed($label); + return 0; + } + } &addlog("Rule $label passed."); return 1; }