Patrons de cônes
Author: Daniel Mentrard
Date: 8 juin 2008

2πr

Punto azul para girar;
Punto rojo para desplazar.

r = 5 (slider from 0.1 to 10, step 0.1)
h = 12.5 (slider from 1 to 15, step 0.1)
A = (49.645198397927246, 14.191763681673695)
apo: (r^(2.0) + h^(2.0))^(0.5)
M: (22.0 + r, 5.1)
N: (22.0 - r, 5.1)
T = Midpoint(M, N)
g1 = Circle(T, h)
m = Segment(T, M)
a1 = OrthogonalLine(T, m)
K, S = Intersect(g1, a1)
f(x) = sqrt(r^(2.0) - (x - 22.0)^(2.0)) / 4.0 + 5.0
Q = Point(f)
P = Point(f)
i(x) = -f(x) + 10.0
R = Point(i)
O = Point(i)
L = Point(i)
α: 360.0 * r / apo
e: apo + 2.0 * r
g: apo + r
S_1: (x(T), y(T) + sqrt(apo^(2.0) - r^(2.0)))
n = Segment(S_1, T)
T3: r + ""
c_1 = Conic(R, L, O, P, Q)
e1 = Conic(R, L, O, P, Q)
f1(x) = sqrt(r^(2.0) - (x - 22.0)^(2.0)) / 4.0 + 5.0
i1(x) = -f(x) + 10.0
poly1, m_1, s_1, n_1 = Polygon(S, N, M)
u = Vector(T, S)
h1 = Translate(i1, u)
p = Translate(e1, u)
f2 = Translate(f1, u)
g2 = Translate(f1, u)
H = Translate(N, u)
I = Translate(M, u)
a = Segment(I, M)
b = Segment(H, N)
c = Circle(A, h / 2.0)
B = Point(c)
d = Line(A, B)
j = OrthogonalLine(B, d)
C, D = Intersect(c, d)
k = Line(D, j)
q = Circle(B, 3.141592653589793 * r)
E, F = Intersect(q, j)
s = Circle(D, 3.141592653589793 * r)
G, J = Intersect(s, k)
poly2, f_1, e_1, g_1, j_1 = Polygon(F, E, G, J)
t = Circle(B, r)
U, V = Intersect(t, d)
c1 = Circle(V, B)
d1 = Circle(D, r)
W, Z = Intersect(d1, d)
k1 = Circle(W, D)
p1 = Circle(V, B)
q1 = Circle(W, D)
poly3, f_2, e_2, g_2, j_2 = Polygon(F, E, G, J)
A1 = Midpoint(j_2)
B1 = Midpoint(e_2)
C1 = Midpoint(F, A1)
D1 = Midpoint(C1, F)
E1 = Midpoint(E, B1)
F1 = Midpoint(E, E1)
G1 = Midpoint(D1, F1)
H1 = Midpoint(F, B)
I1 = Midpoint(F, H1)
J1 = Midpoint(J, D)
K1 = Midpoint(J, J1)
L1 = Midpoint(I1, K1)
v = Vector(G1, F1)
w = Vector(G1, D1)
z = Vector(L1, I1)
l = Vector(L1, K1)
M1 = Point(p1)
b1 = Segment(M1, V)
N1 = Midpoint(b1)
T1: "" + r
T4: "" + h