Forgot the 'skew' library!
This commit is contained in:
parent
dc364443d7
commit
4473ffa5df
|
@ -3,7 +3,7 @@
|
||||||
// (c) Simon Brooke 2025; CC-BY-SA
|
// (c) Simon Brooke 2025; CC-BY-SA
|
||||||
|
|
||||||
|
|
||||||
include <BentSim/Bike_accessories.scad>
|
include <BentSim/Library/Bike_accessories.scad>
|
||||||
include <NACAAirfoils/files/Naca4.scad>
|
include <NACAAirfoils/files/Naca4.scad>
|
||||||
include <library/skew.scad>
|
include <library/skew.scad>
|
||||||
|
|
||||||
|
|
43
model/library/skew.scad
Normal file
43
model/library/skew.scad
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
/* Taken from https://gist.github.com/boredzo/fde487c724a40a26fa9c?permalink_comment_id=4258747 */
|
||||||
|
|
||||||
|
/* skew takes an array of six angles:
|
||||||
|
* x along y
|
||||||
|
* x along z
|
||||||
|
* y along x
|
||||||
|
* y along z
|
||||||
|
* z along x
|
||||||
|
* z along y
|
||||||
|
*/
|
||||||
|
module skew(dims) {
|
||||||
|
matrix = [
|
||||||
|
[ 1, dims[0]/45, dims[1]/45, 0 ],
|
||||||
|
[ dims[2]/45, 1, dims[4]/45, 0 ],
|
||||||
|
[ dims[5]/45, dims[3]/45, 1, 0 ],
|
||||||
|
[ 0, 0, 0, 1 ]
|
||||||
|
];
|
||||||
|
multmatrix(matrix)
|
||||||
|
children();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* example:
|
||||||
|
* skew([45, 0, 0, 0, 0, 0])
|
||||||
|
* cube([10,10,10]);
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Skews the child geometry.
|
||||||
|
// xy: Angle towards X along Y axis.
|
||||||
|
// xz: Angle towards X along Z axis.
|
||||||
|
// yx: Angle towards Y along X axis.
|
||||||
|
// yz: Angle towards Y along Z axis.
|
||||||
|
// zx: Angle towards Z along X axis.
|
||||||
|
// zy: Angle towards Z along Y axis.
|
||||||
|
module skew2(xy = 0, xz = 0, yx = 0, yz = 0, zx = 0, zy = 0) {
|
||||||
|
matrix = [
|
||||||
|
[ 1, tan(xy), tan(xz), 0 ],
|
||||||
|
[ tan(yx), 1, tan(yz), 0 ],
|
||||||
|
[ tan(zx), tan(zy), 1, 0 ],
|
||||||
|
[ 0, 0, 0, 1 ]
|
||||||
|
];
|
||||||
|
multmatrix(matrix)
|
||||||
|
children();
|
||||||
|
}
|
Loading…
Reference in a new issue