rotation du cône

dimensions du cône

déplacement du plan

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 = 1.0122909661567112 rad (slider from 0 to 6.283185307179586, step 0.017453292519943295)
u: cos(phi) * i - sin(theta) * sin(phi) * j
w: -1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * sin(phi) * i - sin(theta) * cos(phi) * j
v': -1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * sin(theta) * j
v: cos(theta) * j
R = 1.7 (slider from 1 to 3, step 0.1)
h = 3.7 (slider from 0.5 to 5, step 0.1)
A = placer(theta, phi, R, 0.0, 0.0)
D = placer(theta, phi, -1.0 * R, 0.0, 0.0)
E = placer(theta, phi, 0.0, R, 0.0)
F = placer(theta, phi, 0.0, -1.0 * R, 0.0)
a = Segment(F, E)
b = Segment(A, D)
G: (R, 0.0)
H: (-1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * R, 0.0)
I = placer(theta, phi, 0.0, 0.0, h)
e = cercle3D(R, 0.0, 0.0, -1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 0.5 * R, 0.866 * R, 0.0, -1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 0.5 * R, -1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 * 0.866 * R, 0.0, O, phi, theta)
liste1 = Sequence(placer[theta, phi, R * cos(i * 3.1416 / 180.0), R * sin(i * 3.1416 / 180.0), 0.0], i, 0.0, 360.0)
J = placer(theta, phi, 0.0, 0.0, h)
liste2 = Sequence(Segment[Element[liste1, i], J], i, 1.0, 360.0)
K = placer(theta, phi, -3.5, 3.5, 0.0)
L = placer(theta, phi, -3.5, 3.5, 0.5)
zz = Vector(K, L)
z = 1.3 (slider from -1 to 6, step 0.05)
M = placer(theta, phi, -4.0, -4.0, z)
N = placer(theta, phi, -4.0, 4.0, z)
P = placer(theta, phi, 4.0, -4.0, z)
Q = placer(theta, phi, 4.0, 4.0, z)
poly1, q, p, m, n = Polygon(Q, P, M, N)
c = If(z ≥ 0.0, If[z < h, (h - z) * R / h, 0.0], 0.0)
d = cercle3D(c, 0.0, z, -1.0 * 1.0 * 1.0 * 1.0 * 0.5 * c, 0.866 * c, z, -1.0 * 1.0 * 1.0 * 1.0 * 0.5 * c, -1.0 * 1.0 * 1.0 * 1.0 * 0.866 * c, z, O, phi, theta)

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

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

Tool: ThreeDCircleTrough3Points (command cercle3D)
Input: x_0, y_0, z_0, x_1, y_1, z_1, x_2, y_2, z_2, A, th, phi
Output: Cercle_{circ}

w_2: x_2 - x_0
v_2: z_2 - z_0
u_2: y_2 - y_0
w_1: x_1 - x_0
v_1: z_1 - z_0
x_{vec0}: v_1 * w_2 - v_2 * w_1
u_1: y_1 - y_0
z_{vec0}: u_1 * v_2 - u_2 * v_1
y_{vec0}: w_1 * u_2 - w_2 * u_1
i_0: -1.0 * 1.0 * sin(th) * Vector[(1.0, 0.0)] - sin(phi) * cos(th) * Vector[(0.0, 1.0)]
k_0: cos(phi) * Vector[(0.0, 1.0)]
j_0: cos(th) * Vector[(1.0, 0.0)] - sin(phi) * sin(th) * Vector[(0.0, 1.0)]
A_0: A + y_0 * j_0 + z_0 * k_0 + x_0 * i_0
A_1: A + y_1 * j_0 + z_1 * k_0 + x_1 * i_0
A_2: A + y_2 * j_0 + z_2 * k_0 + x_2 * i_0
mil_2 = Midpoint(A_2, A_0)
mil_1 = Midpoint(A_0, A_1)
vek_1: (y_{vec0} * w_1 - z_{vec0} * v_1) * j_0 + (z_{vec0} * u_1 - x_{vec0} * w_1) * k_0 + (x_{vec0} * v_1 - y_{vec0} * u_1) * i_0
vek_2: (y_{vec0} * w_2 - z_{vec0} * v_2) * j_0 + (z_{vec0} * u_2 - x_{vec0} * w_2) * k_0 + (x_{vec0} * v_2 - y_{vec0} * u_2) * i_0
media_1 = Line(mil_1, vek_1)
media_2 = Line(mil_2, vek_2)
centre_{cercle} = Intersect(media_1, media_2)
A'_2 = Mirror(A_2, centre_{cercle})
A'_1 = Mirror(A_1, centre_{cercle})
Cercle_{circ} = Conic(A_2, A'_1, A_0, A'_2, A_1)