Fahrrad auf Kurvenfahrt
Author: Dörte Haftendorn

Bewege P.
Das schöne Fahrrad ist von Dieter Riebesehl.

Ortskurve

f(x) = -(0.1) * (x - 2.641609592626355)^(3.0) + 0.8 * (x - 2.641609592626355) + 2.258041093309024
Fahrradgroesse = 0.4 (slider from 0.4 to 1.2, step 0.1)
ny(x) = f(x) + 0.5 * Fahrradgroesse / sqrt(1.0 + f'(x)^(2.0))
nx(x) = x - 0.5 * Fahrradgroesse * f'(x) / sqrt(1.0 + f'(x)^(2.0))
P = Point(f)
e = Circle(P, 0.5 * Fahrradgroesse)
a = Tangent(P, f)
c = OrthogonalLine(P, a)
C, D = Intersect(e, c)
M = If(y(D) > y(P), D, C)
P_1 = Root(sqrt((nx(x) - x(M))^(2.0) + (ny(x) - y(M))^(2.0)) - 1.3 * Fahrradgroesse, x(P), x(P) + 2.5 * Fahrradgroesse)
B: (x(P_1), f(x(P_1)))
g = Circle(B, 0.5 * Fahrradgroesse)
b = Tangent(B, f)
d = OrthogonalLine(B, b)
E, F = Intersect(g, d)
N = If(y(F) > y(B), F, E)
G = Midpoint(M, N)
G' = Rotate(G, 59.99999999999999*°, M)
l = Segment(G', M)
m_3 = Line(G, l)
i = Segment(M, G)
n = Line(G', i)
H_2 = Intersect(m_3, n)
a_1 = Ray(G, H_2)
h_4 = Circle(M, P)
k = Circle(N, B)
α = Angle(G, M, G')
p = Segment(G', H_2)
r = Segment(H_2, N)
b_1 = Ray(G, G')
f_1(x) = sqrt((nx(x) - x(M))^(2.0) + (ny(x) - y(M))^(2.0)) - 1.3 * Fahrradgroesse
s = Circle(G, 0.8 * Fahrradgroesse)
I = Intersect(s, b_1)
J = Intersect(s, a_1)
j = Segment(J, G)
q = Line(J, p)
c_1 = Circle(J, 0.2 * Fahrradgroesse)
K, L = Intersect(c_1, q)
d_1 = Segment(K, L)
e_1 = Circle(M, 0.1 * Fahrradgroesse)
g_1 = Circle(G, 0.15 * Fahrradgroesse)
h_1 = Ray(G, M)
k_1 = Circle(G, 1.95 * Fahrradgroesse)
O = Intersect(k_1, h_1)
i_1, j_1 = Tangent(O, g_1)
Q, R = Intersect(e_1, j_1)
S, T = Intersect(e_1, i_1)
U = Intersect(g_1, i_1)
V = Intersect(g_1, j_1)
l_1 = Segment(Q, V)
m_1 = Segment(S, U)
H' = Rotate(H_2, 90.0*°, N)
H'_1 = Rotate(H_2, 260.0*°, N)
n_1 = Ray(N, H')
p_1 = Ray(N, H'_1)
q_1 = Circle(N, 0.53 * Fahrradgroesse)
W = Intersect(q_1, n_1)
Z = Intersect(q_1, p_1)
r_1 = CircleArc(N, Z, W)
G'' = Rotate(G', 130.0*°, M)
β = Angle(G', M, G'')
G''_1 = Rotate(G', 280.0*°, M)
s_1 = Ray(M, G'')
t_1 = Ray(M, G''_1)
c_2 = Circle(M, 0.53 * Fahrradgroesse)
A_1 = Intersect(c_2, s_1)
B_1 = Intersect(c_2, t_1)
d_2 = CircleArc(M, B_1, A_1)
G''_2 = Rotate(G', -4.0 * x(P), G)
γ = Angle(G', G, G''_2)
a_2 = Line(G''_2, G)
e_2 = Circle(G, 0.2 * Fahrradgroesse)
C_1, D_1 = Intersect(e_2, a_2)
b_2 = Segment(D_1, C_1)
f_2 = Line(C_1, i)
g_2 = Line(D_1, i)
h_2 = Circle(C_1, 0.05 * Fahrradgroesse)
E_1, F_1 = Intersect(h_2, f_2)
i_2 = Segment(E_1, F_1)
k_2 = Circle(D_1, 0.05 * Fahrradgroesse)
G_1, H_1 = Intersect(k_2, g_2)
j_2 = Segment(G_1, H_1)
p_2(x) = 3.0 - (x - 6.0)^(2.0) / 12.0 - (x - 6.0)^(3.0) / 54.0 + 2.0 * sin(x)
X_p: (x(P), 0.0)
n_2 = Segment(P, X_p)
f_3(x) = f'(x)
h = Tangent(P, f)
o = Slope(h)
A: (x(P), Slope[h])
m = Segment((x(P) + 1.0, y(P)), (x(P) + 1.0, y(P) + Slope[h]))
c_3 = Segment(A, X_p)
u = false