rotation

rotation

O = Intersect(xAxis, yAxis)
B = Point(xAxis)
i = Vector(O, B)
C = Point(yAxis)
j = Vector(O, C)
theta = 0.3839724354387525 rad (slider from 0 to 6.283185307179586, step 0.017453292519943295)
phi = 0.8726646259971648 rad (slider from 0 to 6.283185307179586, step 0.017453292519943295)
u: cos(phi) * i - sin(theta) * sin(phi) * j
w: -1 * sin(phi) * i - sin(theta) * cos(phi) * j
v': -1 * sin(theta) * j
v: cos(theta) * j
A = placer(theta, phi, 5, 5, 5)
D = placer(theta, phi, -5, 5, 5)
E = placer(theta, phi, 5, -5, 5)
F = placer(theta, phi, 5, 5, -5)
G = placer(theta, phi, -5, -5, 5)
H = placer(theta, phi, -5, 5, -5)
I = placer(theta, phi, -5, -5, -5)
J = placer(theta, phi, 5, -5, -5)
a = Segment(D, G)
b = Segment(G, E)
c = Segment(E, A)
d = Segment(A, D)
e = Segment(H, D)
f = Segment(G, I)
g = Segment(E, J)
h = Segment(A, F)
k = Segment(F, J)
l = Segment(J, I)
m = Segment(I, H)
n = Segment(H, F)
distanceID = Distance(I, D)

Tool: point3D (command placer)
placer[theta,phi,x,y,z]
Input: theta, phi, a, b, c
Output: D

D: (-1 * a * sin(phi) + b * cos(phi), -1 * a * sin(theta) * cos(phi) - b * sin(theta) * sin(phi) + c * cos(theta))