]> gitweb.factorcode.org Git - factor.git/commitdiff
Add q+ and q- to math.quaternions
authorSamuel Tardieu <sam@rfc1149.net>
Mon, 27 Apr 2009 15:23:59 +0000 (17:23 +0200)
committerSamuel Tardieu <sam@rfc1149.net>
Mon, 27 Apr 2009 15:24:39 +0000 (17:24 +0200)
This makes the quaternions library self-contained and more independent
of the underlying representation.

basis/math/quaternions/quaternions-docs.factor
basis/math/quaternions/quaternions-tests.factor
basis/math/quaternions/quaternions.factor

index bb34ec8da2dc5ae9598ca28251151f5bae2b3daf..a24011cb7c6c275d543719a8b72c96f5b7b723dd 100644 (file)
@@ -1,6 +1,16 @@
 USING: help.markup help.syntax math math.vectors vectors ;
 IN: math.quaternions
 
+HELP: q+
+{ $values { "u" "a quaternion" } { "v" "a quaternion" } { "u+v" "a quaternion" } }
+{ $description "Add quaternions." }
+{ $examples { $example "USING: math.quaternions prettyprint ;" "{ C{ 0 1 } 0 } { 0 1 } q+ ." "{ C{ 0 1 } 1 }" } } ;
+
+HELP: q-
+{ $values { "u" "a quaternion" } { "v" "a quaternion" } { "u-v" "a quaternion" } }
+{ $description "Subtract quaternions." }
+{ $examples { $example "USING: math.quaternions prettyprint ;" "{ C{ 0 1 } 0 } { 0 1 } q- ." "{ C{ 0 1 } -1 }" } } ;
+
 HELP: q*
 { $values { "u" "a quaternion" } { "v" "a quaternion" } { "u*v" "a quaternion" } }
 { $description "Multiply quaternions." }
index a6d255e421f47ba5a0e9c73f05930cb6b3ec4d99..3efc417e420be84827d8caef6ecd3e839dd6ebe6 100644 (file)
@@ -24,3 +24,7 @@ math.constants ;
 [ t ] [ qk q>v v>q qk = ] unit-test
 [ t ] [ 1 c>q q1 = ] unit-test
 [ t ] [ C{ 0 1 } c>q qi = ] unit-test
+[ t ] [ qi qi q+ qi 2 q*n = ] unit-test
+[ t ] [ qi qi q- q0 = ] unit-test
+[ t ] [ qi qj q+ qj qi q+ = ] unit-test
+[ t ] [ qi qj q- qj qi q- -1 q*n = ] unit-test
index f2c2c6d226051727e007403d6e002deb1fa30037..b713f44ebdbbf528a04aa79243befa7bc3a0bbde 100755 (executable)
@@ -20,6 +20,12 @@ IN: math.quaternions
 
 PRIVATE>
 
+: q+ ( u v -- u+v )
+    v+ ;
+
+: q- ( u v -- u-v )
+    v- ;
+
 : q* ( u v -- u*v )
     [ q*a ] [ q*b ] 2bi 2array ;