From 66e1001ba4407569a4f664410258fdef6832f990 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Thu, 2 May 2019 09:19:37 +0800 Subject: [PATCH] add m_shearing doc --- docs/images/lib-m_shearing-1.JPG | Bin 0 -> 47387 bytes docs/lib-m_shearing.md | 49 +++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 docs/images/lib-m_shearing-1.JPG create mode 100644 docs/lib-m_shearing.md diff --git a/docs/images/lib-m_shearing-1.JPG b/docs/images/lib-m_shearing-1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..643bde5f0d5eefc316c4481849302f2e68ac1d9d GIT binary patch literal 47387 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 KRJ3CMzX<^I#N3Vm literal 0 HcmV?d00001 diff --git a/docs/lib-m_shearing.md b/docs/lib-m_shearing.md new file mode 100644 index 00000000..f471fd3d --- /dev/null +++ b/docs/lib-m_shearing.md @@ -0,0 +1,49 @@ +# m_shearing + +Generate a 4x4 transformation matrix which can pass into `multmatrix` to shear all child elements along the X-axis, Y-axis, or Z-axis in 3D. + +## Parameters + +- `sx` : An array `[SHy, SHz]`. The new coordinates of child elements are `(x + SHy * y + SHz * z, y, z)`. +- `sy` : An array `[SHx, SHz]`. The new coordinates of child elements are `(x, y + SHx * x + SHz * z, z)`. +- `sz` : An array `[SHx, SHy]`. The new coordinates of child elements are `(x, y, z + SHx * x + SHy * y)`. + +## Examples + + include ; + + color("red") { + multmatrix(m_shearing(sx = [1, 0])) + cube(1); + + translate([2, 0, 0]) multmatrix(m_shearing(sx = [0, 1])) + cube(1); + + translate([4, 0, 0]) multmatrix(m_shearing(sx = [1, 1])) + cube(1); + } + + translate([0, -3, 0]) color("green") { + multmatrix(m_shearing(sy = [1, 0])) + cube(1); + + translate([2, 0, 0]) multmatrix(m_shearing(sy = [0, 1])) + cube(1); + + translate([4, 0, 0]) multmatrix(m_shearing(sy = [1, 1])) + cube(1); + } + + translate([0, -5, 0]) color("blue") { + multmatrix(m_shearing(sz = [1, 0])) + cube(1); + + translate([2, 0, 0]) multmatrix(m_shearing(sz = [0, 1])) + cube(1); + + translate([4, 0, 0]) multmatrix(m_shearing(sz = [1, 1])) + cube(1); + } + +![m_shearing](images/lib-m_shearing-1.JPG) +