From d3f13ab0dc8da566802e6b06721b8a81c0f24dd8 Mon Sep 17 00:00:00 2001 From: Geoff deRosenroll Date: Sat, 6 Aug 2022 17:09:20 -0700 Subject: [PATCH] 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. --- affine.scad | 24 ++++++++++++------------ tests/test_affine.scad | 6 +++--- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/affine.scad b/affine.scad index 3bf47c8..94091c9 100644 --- a/affine.scad +++ b/affine.scad @@ -519,10 +519,10 @@ function affine3d_skew_xy(xa=0, ya=0) = assert(is_finite(xa)) assert(is_finite(ya)) [ - [1, 0, tan(xa), 0], - [0, 1, tan(ya), 0], - [0, 0, 1, 0], - [0, 0, 0, 1] + [ 1, tan(xa), 0, 0], + [tan(ya), 1, 0, 0], + [ 0, 0, 1, 0], + [ 0, 0, 0, 1] ]; @@ -551,10 +551,10 @@ function affine3d_skew_xz(xa=0, za=0) = assert(is_finite(xa)) assert(is_finite(za)) [ - [1, tan(xa), 0, 0], - [0, 1, 0, 0], - [0, tan(za), 1, 0], - [0, 0, 0, 1] + [ 1, 0, tan(xa), 0], + [ 0, 1, 0, 0], + [tan(za), 0, 1, 0], + [ 0, 0, 0, 1] ]; @@ -583,10 +583,10 @@ function affine3d_skew_yz(ya=0, za=0) = assert(is_finite(ya)) assert(is_finite(za)) [ - [ 1, 0, 0, 0], - [tan(ya), 1, 0, 0], - [tan(za), 0, 1, 0], - [ 0, 0, 0, 1] + [1, 0, 0, 0], + [0, 1, tan(ya), 0], + [0, tan(za), 1, 0], + [0, 0, 0, 1] ]; diff --git a/tests/test_affine.scad b/tests/test_affine.scad index 7e90ebd..3668bab 100644 --- a/tests/test_affine.scad +++ b/tests/test_affine.scad @@ -137,7 +137,7 @@ test_affine3d_skew(); module test_affine3d_skew_xy() { for(ya = [-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() { for(za = [-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() { for(za = [-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]]); } } }