X-Git-Url: http://git.dev.opencascade.org/gitweb/?p=occt.git;a=blobdiff_plain;f=src%2FDrawResources%2FVector.tcl;h=10e26b02071aabfb2304781d487aa173309cee66;hb=7bd071edb13e5aa7a1d3aed4ed4366fe3da83324;hpb=80da8585f4351470d5034519a8468a88bd12a819 diff --git a/src/DrawResources/Vector.tcl b/src/DrawResources/Vector.tcl index 743983c539..10e26b0207 100644 --- a/src/DrawResources/Vector.tcl +++ b/src/DrawResources/Vector.tcl @@ -230,6 +230,45 @@ proc 2ddot {x1 y1 x2 y2} { uplevel dval ($x1)*($x2)+($y1)*($y2) } +help vecangle {vecangle x1 y1 z1 x2 y2 z2 + returns angle between two vectors\ +} {Vector and measurement Commands} + +proc vecangle {x1 y1 z1 x2 y2 z2} { + set d [uplevel dot $x1 $y1 $z1 $x2 $y2 $z2] + set c [uplevel cross $x1 $y1 $z1 $x2 $y2 $z2] + set cm [uplevel module $c] + + set m1 [uplevel module $x1 $y1 $z1] + set m2 [uplevel module $x2 $y2 $z2] + set mm [expr $m1*$m2] + + if { $cm < $d } { + expr asin($cm/$mm) + } else { + expr acos($d/$mm) + } +} + +help 2dvecangle {2dvecangle x1 y1 x2 y2 + returns angle between two vectors\ +} {Vector and measurement Commands} + +proc 2dvecangle {x1 y1 x2 y2} { + set d [uplevel 1 2ddot $x1 $y1 $x2 $y2] + set c [uplevel 1 2dcross $x1 $y1 $x2 $y2] + + set m1 [uplevel 1 2dmodule $x1 $y1] + set m2 [uplevel 1 2dmodule $x2 $y2] + set mm [expr $m1*$m2] + + if { $c < $d } { + expr asin($c/$mm) + } else { + expr acos($d/$mm) + } +} + help scale {scale x y z factor returns vector multiplied by scalar\ } {Vector and measurement Commands}