diff --git a/docs/images/lib-m_shearing-1.JPG b/docs/images/lib-m_shearing-1.JPG new file mode 100644 index 00000000..643bde5f Binary files /dev/null and b/docs/images/lib-m_shearing-1.JPG differ 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) +