--- loncom/homework/functionplotresponse.pm 2012/02/28 15:46:55 1.92
+++ loncom/homework/functionplotresponse.pm 2012/02/28 22:42:31 1.93
@@ -1,7 +1,7 @@
# LearningOnline Network with CAPA
# Functionplot responses
#
-# $Id: functionplotresponse.pm,v 1.92 2012/02/28 15:46:55 www Exp $
+# $Id: functionplotresponse.pm,v 1.93 2012/02/28 22:42:31 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -38,6 +38,7 @@ BEGIN {
&Apache::lonxml::register('Apache::functionplotresponse',('functionplotresponse','backgroundplot','spline',
'plotobject','plotvector',
'functionplotvectorrule','functionplotvectorsumrule',
+ 'drawvectorsum',
'functionplotcustomrule',
'functionplotrule','functionplotruleset',
'functionplotelements'));
@@ -591,6 +592,83 @@ sub end_plotvector {
}
+#
+# Vector sum - have GeoGebra draw a sum of specified vectors to help students draw
+#
+
+sub start_drawvectorsum {
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ my $result='';
+ my $internalid = $Apache::inputtags::part.'_'.$Apache::inputtags::response[-1];
+ my $tailx=&Apache::lonxml::get_param('tailx',$parstack,$safeeval);
+ my $taily=&Apache::lonxml::get_param('taily',$parstack,$safeeval);
+ my $vectorlist=&Apache::lonxml::get_param('vectorlist',$parstack,$safeeval);
+ my $label=&Apache::lonxml::get_param('label',$parstack,$safeeval);
+ $label=~s/\W//gs;
+ $label=ucfirst($label);
+ unless ($label) { $label="NewVector"; }
+ if ($target eq 'web') {
+ my ($xmin,$xmax,$ymin,$ymax)=&boundaries($parstack,$safeeval,-3);
+ unless (defined($tailx)) { $tailx=$xmin; }
+ unless (defined($taily)) { $taily=$ymin; }
+ unless (defined($vectorlist)) { $vectorlist=''; }
+ my @vectors=split(/\,/,$vectorlist);
+ if ($#vectors>0) {
+ my @sumx=();
+ my @sumy=();
+ foreach my $thisvector (@vectors) {
+ $thisvector=~s/\W//gs;
+ $thisvector=ucfirst($thisvector);
+ unless ($thisvector) { next; }
+ my $vectorx=$thisvector.'X';
+ my $vectory=$thisvector.'Y';
+ $result.=(<'.
+ &Apache::edit::text_arg('Vector List:','vectorlist',
+ $token,'40').
+ &Apache::edit::end_row();
+ } elsif ($target eq 'modified') {
+ $env{'form.'.&Apache::edit::html_element_name('label')}=ucfirst($env{'form.'.&Apache::edit::html_element_name('label')});
+ my $constructtag=&Apache::edit::get_new_args($token,$parstack,$safeeval,'label','tailx','taily','vectorlist');
+ if ($constructtag) { $result=&Apache::edit::rebuild_tag($token); }
+ }
+ return $result;
+}
+
+
+sub end_drawvectorsum {
+ my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ my $result='';
+ if ($target eq 'edit') {
+ $result=&Apache::edit::end_table();
+ }
+ return $result;
+}
+
+
#
#