1
0
mirror of https://github.com/JustinSDK/dotSCAD.git synced 2025-08-11 01:04:07 +02:00
This commit is contained in:
Justin Lin
2022-05-08 16:10:37 +08:00
parent 6549c22938
commit 05c55ff1bb

View File

@@ -4,32 +4,22 @@ use <../../__comm__/__to_ang_vect.scad>;
function _q_rotate_p_3d(p, a, v) = function _q_rotate_p_3d(p, a, v) =
let( let(
half_a = a / 2, uv = v / norm(v),
axis = v / norm(v), s = sin(a / 2) * uv,
s = sin(half_a), w = sin(a) * uv,
x = s * axis.x,
y = s * axis.y,
z = s * axis.z,
w = cos(half_a),
x2 = x + x,
y2 = y + y,
z2 = z + z,
xx = x * x2, xx = 2 * s.x ^ 2,
yx = y * x2, yy = 2 * s.y ^ 2,
yy = y * y2, zz = 2 * s.z ^ 2,
zx = z * x2,
zy = z * y2, xy = 2 * s.x * s.y,
zz = z * z2, xz = 2 * s.x * s.z,
wx = w * x2, yz = 2 * s.y * s.z
wy = w * y2,
wz = w * z2
) )
p * [ p * [
[1 - yy - zz, yx + wz, zx - wy], [1 - yy - zz, xy - w.z, xz + w.y],
[yx - wz, 1 - xx - zz, zy + wx], [xy + w.z, 1 - xx - zz, yz - w.x],
[zx + wy, zy - wx, 1 - xx - yy] [xz - w.y, yz + w.x, 1 - xx - yy]
]; ];
function _rotx(pt, a) = function _rotx(pt, a) =