fix a stupid bug in simd rotation-matrix4
parent
5ac5a74cc6
commit
0044964e78
|
@ -53,6 +53,19 @@ IN: math.matrices.simd.tests
|
||||||
1.0e-7 m~
|
1.0e-7 m~
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
|
[ t ] [
|
||||||
|
float-4{ 0.0 1.0 0.0 1.0 } pi 1/2. * rotation-matrix4
|
||||||
|
S{ matrix4 f
|
||||||
|
float-4-array{
|
||||||
|
float-4{ 0.0 0.0 1.0 0.0 }
|
||||||
|
float-4{ 0.0 1.0 0.0 0.0 }
|
||||||
|
float-4{ -1.0 0.0 0.0 0.0 }
|
||||||
|
float-4{ 0.0 0.0 0.0 1.0 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
1.0e-7 m~
|
||||||
|
] unit-test
|
||||||
|
|
||||||
[
|
[
|
||||||
S{ matrix4 f
|
S{ matrix4 f
|
||||||
float-4-array{
|
float-4-array{
|
||||||
|
|
|
@ -95,6 +95,17 @@ TYPED:: m4. ( a: matrix4 b: matrix4 -- c: matrix4 )
|
||||||
|
|
||||||
c set-rows ;
|
c set-rows ;
|
||||||
|
|
||||||
|
TYPED:: v.m4 ( a: float-4 b: matrix4 -- c: float-4 )
|
||||||
|
b rows :> b4 :> b3 :> b2 :> b1
|
||||||
|
|
||||||
|
a first b1 n*v
|
||||||
|
a second b2 n*v v+
|
||||||
|
a third b3 n*v v+
|
||||||
|
a fourth b4 n*v v+ ;
|
||||||
|
|
||||||
|
TYPED:: m4.v ( a: matrix4 b: float-4 -- c: float-4 )
|
||||||
|
a rows [ b v. ] 4 napply float-4-boa ;
|
||||||
|
|
||||||
CONSTANT: identity-matrix4
|
CONSTANT: identity-matrix4
|
||||||
S{ matrix4 f
|
S{ matrix4 f
|
||||||
float-4-array{
|
float-4-array{
|
||||||
|
@ -165,17 +176,17 @@ TYPED:: rotation-matrix4 ( axis: float-4 theta: float -- matrix: matrix4 )
|
||||||
|
|
||||||
axis2 cc ones axis2 v- v* v+ :> diagonal
|
axis2 cc ones axis2 v- v* v+ :> diagonal
|
||||||
|
|
||||||
axis { 0 0 1 3 } vshuffle axis { 1 2 2 3 } vshuffle v* 1-c v*
|
axis { 1 0 0 3 } vshuffle axis { 2 2 1 3 } vshuffle v* 1-c v*
|
||||||
float-4{ t t t f } vmask :> triangle-a
|
float-4{ t t t f } vmask :> triangle-a
|
||||||
ss { 2 1 0 3 } vshuffle triangle-sign v* :> triangle-b
|
ss axis v* triangle-sign v* :> triangle-b
|
||||||
triangle-a triangle-b v+ :> triangle-lo
|
triangle-a triangle-b v+ :> triangle-lo
|
||||||
triangle-a triangle-b v- :> triangle-hi
|
triangle-a triangle-b v- :> triangle-hi
|
||||||
|
|
||||||
diagonal scale-matrix4 :> diagonal-m
|
diagonal scale-matrix4 :> diagonal-m
|
||||||
|
|
||||||
triangle-hi { 3 0 1 3 } vshuffle
|
triangle-hi { 3 2 1 3 } vshuffle
|
||||||
triangle-hi { 3 3 2 3 } vshuffle triangle-lo { 0 3 3 3 } vshuffle v+
|
triangle-hi { 3 3 0 3 } vshuffle triangle-lo { 2 3 3 3 } vshuffle v+
|
||||||
triangle-lo { 1 2 3 3 } vshuffle
|
triangle-lo { 1 0 3 3 } vshuffle
|
||||||
float-4 new
|
float-4 new
|
||||||
|
|
||||||
triangle-m set-rows drop
|
triangle-m set-rows drop
|
||||||
|
|
Loading…
Reference in New Issue