Match affine3d skews up to affine2d_skew behaviour

Currently, affine2d_skew and affine3d_skew_xy have different behaviour.
Similarly, affine3d_skew_xz and affine3d_skew_yz do not skew the same
was as affine2d_skew does (if you were to look down the third axis at
the relevant plane). This commit brings them into agreement.
This commit is contained in:
Geoff deRosenroll 2022-08-06 17:09:20 -07:00
parent 13f00a4bde
commit d3f13ab0dc
2 changed files with 15 additions and 15 deletions

View file

@ -519,8 +519,8 @@ function affine3d_skew_xy(xa=0, ya=0) =
assert(is_finite(xa)) assert(is_finite(xa))
assert(is_finite(ya)) assert(is_finite(ya))
[ [
[1, 0, tan(xa), 0], [ 1, tan(xa), 0, 0],
[0, 1, tan(ya), 0], [tan(ya), 1, 0, 0],
[ 0, 0, 1, 0], [ 0, 0, 1, 0],
[ 0, 0, 0, 1] [ 0, 0, 0, 1]
]; ];
@ -551,9 +551,9 @@ function affine3d_skew_xz(xa=0, za=0) =
assert(is_finite(xa)) assert(is_finite(xa))
assert(is_finite(za)) assert(is_finite(za))
[ [
[1, tan(xa), 0, 0], [ 1, 0, tan(xa), 0],
[ 0, 1, 0, 0], [ 0, 1, 0, 0],
[0, tan(za), 1, 0], [tan(za), 0, 1, 0],
[ 0, 0, 0, 1] [ 0, 0, 0, 1]
]; ];
@ -584,8 +584,8 @@ function affine3d_skew_yz(ya=0, za=0) =
assert(is_finite(za)) assert(is_finite(za))
[ [
[1, 0, 0, 0], [1, 0, 0, 0],
[tan(ya), 1, 0, 0], [0, 1, tan(ya), 0],
[tan(za), 0, 1, 0], [0, tan(za), 1, 0],
[0, 0, 0, 1] [0, 0, 0, 1]
]; ];

View file

@ -137,7 +137,7 @@ test_affine3d_skew();
module test_affine3d_skew_xy() { module test_affine3d_skew_xy() {
for(ya = [-89:3:89]) { for(ya = [-89:3:89]) {
for(xa = [-89:3:89]) { for(xa = [-89:3:89]) {
assert(affine3d_skew_xy(xa=xa, ya=ya) == [[1,0,tan(xa),0],[0,1,tan(ya),0],[0,0,1,0],[0,0,0,1]]); assert(affine3d_skew_xy(xa=xa, ya=ya) == [[1,tan(xa),0,0],[tan(ya),1,0,0],[0,0,1,0],[0,0,0,1]]);
} }
} }
} }
@ -147,7 +147,7 @@ test_affine3d_skew_xy();
module test_affine3d_skew_xz() { module test_affine3d_skew_xz() {
for(za = [-89:3:89]) { for(za = [-89:3:89]) {
for(xa = [-89:3:89]) { for(xa = [-89:3:89]) {
assert(affine3d_skew_xz(xa=xa, za=za) == [[1,tan(xa),0,0],[0,1,0,0],[0,tan(za),1,0],[0,0,0,1]]); assert(affine3d_skew_xz(xa=xa, za=za) == [[1,0,tan(xa),0],[0,1,0,0],[tan(za),0,1,0],[0,0,0,1]]);
} }
} }
} }
@ -157,7 +157,7 @@ test_affine3d_skew_xz();
module test_affine3d_skew_yz() { module test_affine3d_skew_yz() {
for(za = [-89:3:89]) { for(za = [-89:3:89]) {
for(ya = [-89:3:89]) { for(ya = [-89:3:89]) {
assert(affine3d_skew_yz(ya=ya, za=za) == [[1,0,0,0],[tan(ya),1,0,0],[tan(za),0,1,0],[0,0,0,1]]); assert(affine3d_skew_yz(ya=ya, za=za) == [[1,0,0,0],[0,1,tan(ya),0],[0,tan(za),1,0],[0,0,0,1]]);
} }
} }
} }