version 1.92, 2012/02/28 15:46:55
|
version 1.93, 2012/02/28 22:42:31
|
Line 38 BEGIN {
|
Line 38 BEGIN {
|
&Apache::lonxml::register('Apache::functionplotresponse',('functionplotresponse','backgroundplot','spline', |
&Apache::lonxml::register('Apache::functionplotresponse',('functionplotresponse','backgroundplot','spline', |
'plotobject','plotvector', |
'plotobject','plotvector', |
'functionplotvectorrule','functionplotvectorsumrule', |
'functionplotvectorrule','functionplotvectorsumrule', |
|
'drawvectorsum', |
'functionplotcustomrule', |
'functionplotcustomrule', |
'functionplotrule','functionplotruleset', |
'functionplotrule','functionplotruleset', |
'functionplotelements')); |
'functionplotelements')); |
Line 591 sub end_plotvector {
|
Line 592 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.=(<<ENDADDVEC); |
|
document.ggbApplet_$internalid.evalCommand("$vectorx=x($thisvector)"); |
|
document.ggbApplet_$internalid.evalCommand("$vectory=y($thisvector)"); |
|
document.ggbApplet_$internalid.evalCommand("Include$thisvector$label=Checkbox[]"); |
|
ENDADDVEC |
|
push(@sumx,"If[Include$thisvector$label,$vectorx,0]"); |
|
push(@sumy,"If[Include$thisvector$label,$vectory,0]"); |
|
} |
|
$result.="document.ggbApplet_$internalid.evalCommand(".'"'."xTot$label=".join('+',@sumx).'");'."\n"; |
|
$result.="document.ggbApplet_$internalid.evalCommand(".'"'."yTot$label=".join('+',@sumy).'");'."\n"; |
|
$result.=(<<ENDMAKEVECTOR); |
|
document.ggbApplet_$internalid.evalCommand("$label=Vector[($tailx,$taily),($tailx+xTot$label,$taily+yTot$label)]"); |
|
document.ggbApplet_$internalid.setLabelVisible("$label",true); |
|
document.ggbApplet_$internalid.setLineThickness("$label",8); |
|
document.ggbApplet_$internalid.setColor("$label",255,0,0); |
|
ENDMAKEVECTOR |
|
} |
|
} elsif ($target eq 'edit') { |
|
$result=&Apache::edit::tag_start($target,$token,'Draw Vector Sum'). |
|
&Apache::edit::text_arg('Label on Plot:','label', |
|
$token,'16'). |
|
&Apache::edit::text_arg('Tail x:','tailx', |
|
$token,'8'). |
|
&Apache::edit::text_arg('Tail y:','taily', |
|
$token,'8').'<br />'. |
|
&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; |
|
} |
|
|
|
|
|
|
# |
# |
# <backgroundplot function="..." fixed="yes/no" /> |
# <backgroundplot function="..." fixed="yes/no" /> |