Mostra cicloide

Cicloide.
E' il luogo tracciato da un punto di una circonferenza che rotola senza strisciare su una retta.
Per effettuare la costruzione fissiamo il raggio AB della circonferenza. 
Poi scegliamo un punto C sulla semiretta e misuriamo la sua distanza dall'origine. 
Dopo aver costruito la circonferenza tangente alla semiretta in C e di raggio isometrico ad AB, 
riportiamo la distanza OC sulla circonferenza, ottenendo il punto C'. 
A questo punto come varia la distanza OC, varierà allo stesso modo la misura del'arco CC'. 
In questo modo però quando C coincide con O, C' non coincide con essi. 
Consideriamo allora il simmetrico C'' di C' rispetto al diametro perpendicolare alla semiretta. 
Il luogo di C'' al variare della posizione di C sulla semiretta è la cicloide. 
Se poi consideriamo i punti E ed F, allineati con  D e C'', per cui OE<OC abbiamo la cicloide accorciata, 
per cui OF>OC si ha la cicloide allungata.
Spostare C sulla retta per tracciare i luoghi per punti.

O = (-5.2809393742875494, -1.8937249571897874)
B_1 = (1.6670592172924057, -1.865307785036086)
a = Ray(O, B_1)
A = (-5.56511109582456, 2.965611481093126)
B = (-4.755221689444077, 2.965611481093126)
b = Segment(A, B)
C = Point(a)
distanzaCO = Distance(C, O)
c = OrthogonalLine(C, a)
d = Circle(C, b)
D = Intersect(d, c, 2)
e = Circle(D, C)
r: distanzaCO / b
C' = Rotate(C, r, D)
α = Angle(C, D, C')
C'' = Mirror(C', c)
loc1 = Locus(C'', C)
f = false
g = Ray(D, C'')
E = Point(g)
F = Point(g)

Tool: Circocerchio
Clicca sul triangolo
Input: poly1
Output: p, T

A = (-4.221655823828217, 0.2573952157720354)
B = (-6.409212927818962, -0.8940157728338809)
C = (-5.616576067409749, -3.37139259388696)
poly1, c, a, b = Polygon(A, B, C)
j = LineBisector(a)
l = LineBisector(c)
T = Intersect(j, l)
p = Circle(T, B)

Tool: Circonferenza inscrita (command Circonferenzainscrita)
Clicca sui vertici del triangolo
Input: N, P, Q
Output: c_1, R

poly2, q_1, n_1, p_1 = Polygon(N, P, Q)
r = AngularBisector(N, Q, P)
s = AngularBisector(P, N, Q)
R = Intersect(r, s)
t = OrthogonalLine(R, p_1)
S = Intersect(t, p_1)
c_1 = Circle(R, S)

Tool: Ortocentro
Clicca sui vertici del triangolo
Input: E_1, F_1, G_1
Output: H_1

j_1 = Line(F_1, G_1)
l_1 = Line(G_1, E_1)
m_1 = OrthogonalLine(F_1, l_1)
n_1 = OrthogonalLine(E_1, j_1)
H_1 = Intersect(m_1, n_1)

Tool: Excerchi
Clicca su 3 rette che determinano un triangolo
Input: b, c, a
Output: p, E, D, F, q, r

d, e = AngularBisector(a, c)
f, g = AngularBisector(b, c)
h, i = AngularBisector(a, b)
D = Intersect(h, d)
E = Intersect(d, f)
F = Intersect(f, h)
j = OrthogonalLine(D, a)
k = OrthogonalLine(E, c)
l = OrthogonalLine(F, b)
G = Intersect(b, l)
H = Intersect(k, c)
I = Intersect(j, a)
p = Circle(E, H)
q = Circle(F, G)
r = Circle(D, I)

Tool: Tr. Equil. su lato (command Treqlato)
Clicca sugli estremi in verso orario
Input: A, C
Output: poly2, a_1, c_1, D, d_1

d = Circle(C, A)
e = Circle(A, C)
D = Intersect(d, e, 2)
poly2, c_1, a_1, d_1 = Polygon(A, D, C)

Tool: Rapporto aureo (command Rapportoaureo)
Clicca sugli estremi del segmento
Input: A, B
Output: E

a = Segment(A, B)
b = OrthogonalLine(B, a)
M = Midpoint(a)
c = Circle(B, M)
C = Intersect(c, b, 2)
d = Segment(C, A)
e = Circle(C, B)
D = Intersect(e, d, 1)
f = Circle(A, D)
E = Intersect(f, a, 1)