--- loncom/homework/functionplotresponse.pm 2011/10/27 00:36:37 1.69 +++ loncom/homework/functionplotresponse.pm 2011/11/18 19:32:48 1.74 @@ -1,7 +1,7 @@ # LearningOnline Network with CAPA -# option list style responses +# Functionplot responses # -# $Id: functionplotresponse.pm,v 1.69 2011/10/27 00:36:37 www Exp $ +# $Id: functionplotresponse.pm,v 1.74 2011/11/18 19:32:48 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -35,6 +35,7 @@ use Apache::run; BEGIN { &Apache::lonxml::register('Apache::functionplotresponse',('functionplotresponse','backgroundplot','spline', + 'plotobject','plotvector', 'functionplotrule','functionplotruleset', 'functionplotelements')); } @@ -379,6 +380,53 @@ sub plot_script { } # +# Subroutine to produce objects +# + +sub plotobject_script { + my ($id,$label,$x,$y)=@_; + unless ($label) { + $Apache::functionplotresponse::counter++; + $label='O'.$Apache::functionplotresponse::counter; + } + return "document.ggbApplet_$id.evalCommand('a=1');\n". + "document.ggbApplet_$id.setVisible('a', false);\n". + "document.ggbApplet_$id.setLabelVisible('a', false);\n". + "document.ggbApplet_$id.evalCommand('$label=a*($x,$y)');\n". + "document.ggbApplet_$id.setVisible('$label', true);\n". + "document.ggbApplet_$id.setLabelVisible('$label', true);\n"; +} + +# +# Subroutine to produce vectors +# + +sub plotvector_script { + my ($id,$label,$xs,$ys,$xe,$ye,$xmin,$xmax)=@_; + unless ($label) { + $Apache::functionplotresponse::counter++; + $label='V'.$Apache::functionplotresponse::counter; + } + my $startlabel=$label.'Start'; + my $endlabel=$label.'End'; + my $pointlabel=$label.'Point'; + my $pointx=2.*($xmax-$xmin)+$xmax; + my $anglelabel=$label.'Angle'; + return + &new_point_coordinate($id,$startlabel,$xs,$ys,0). + &new_point_coordinate($id,$endlabel,$xe,$ye,0). + (< #