--- loncom/homework/functionplotresponse.pm 2011/11/19 23:35:25 1.77 +++ loncom/homework/functionplotresponse.pm 2011/11/20 00:34:52 1.78 @@ -1,7 +1,7 @@ # LearningOnline Network with CAPA # Functionplot responses # -# $Id: functionplotresponse.pm,v 1.77 2011/11/19 23:35:25 www Exp $ +# $Id: functionplotresponse.pm,v 1.78 2011/11/20 00:34:52 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1388,6 +1388,9 @@ sub objectcoords { sub vectorangle { my ($x,$y)=@_; + my $angle=57.2957795*atan2($y,$x); + if ($angle<0) { $angle=360+$angle; } + return $angle; } sub vectorlength { @@ -1395,6 +1398,19 @@ sub vectorlength { return sqrt($x*$x+$y*$y); } +sub relvector { + my ($xs,$xe,$ys,$ye)=@_; + return ($xe-$xs,$ye-$ys); +} + +sub plotvectorlength { + return &vectorlength(&relvector(&vectorcoords(@_))); +} + +sub plotvectorangle { + return &vectorangle(&relvector(&vectorcoords(@_))); +} + # # Evaluate a functionplotvectorrule @@ -1402,6 +1418,7 @@ sub vectorlength { sub functionplotvectorrulecheck { my ($rule,$xmin,$xmax,$ymin,$ymax,$safeeval)=@_; + &addlog("================="); my ($label,$type)=split(/\:/,$rule); if ($type eq 'vector') { return &vectorcheck($rule,$xmin,$xmax,$ymin,$ymax,$safeeval); @@ -1416,11 +1433,14 @@ sub vectorcheck { $attachpoint,$notattachpoint, $tailpoint,$tippoint,$nottailpoint,$nottippoint, $length,$angle,$lengthpercenterror,$anglepercenterror)=split(/\:/,$rule); + &addlog("Vector Rule $label for vector ".$vector); + } sub sumcheck { my ($rule,$xmin,$xmax,$ymin,$ymax,$safeeval)=@_; my ($label,$type,$id,$object,$length,$angle,$lengthpercenterror,$lengthabserror,$anglepercenterror)=split(/\:/,$rule); + &addlog("Vector Sum Rule $label for vectors attached to ".$object); } #