IMP10

Dandelinsche Kugeln ...

sind Kugeln, die die Schnittebene in einem Punkt
und den Doppelkegel in einem Kreis berühren. 
Variiere mit m und h die Lage der Schnittebene.
Untersuche bei Ellipse, Parabel und Hyperbel
Anzahl und Lage der Dandelinschen Kugeln.

Kegelöffnung:

Berührpunkte

Berührkreise

Berührkreisebenen

k = 0.7 (slider from 0.1 to 1, step 0.1)
gl1: x^(2) + y^(2) = ((k * z))^(2)
α: atand(1 / k)
γ: α / 2
h = 1.1 (slider from -3 to 3, step 0.1)
m = 0.4 (slider from -10 to 10)
p: ((-m) * x) + z = h
c = IntersectPath(p, gl1)
A, B = Focus(c)
Lot_2 = OrthogonalLine(B, p)
S_2, S_1, S_3, S_4 = Vertex(c)
f_1: (Distance[B, S_1] * tan(γ))
achse = Line((0, 0, 0), (0, 0, 1))
δ: 90° - γ
f_2: (Distance[B, S_1] * tan(δ))
Lot_1 = OrthogonalLine(A, p)
M_2 = If(m ≟ 0, If[h > 0, (0, 0, h - f_1), (0, 0, h + f_1)], Intersect[Lot_2, achse])
M_1 = If(m ≟ 0, If[h > 0, (0, 0, h + f_2), (0, 0, h - f_2)], Intersect[Lot_1, achse])
K_1 = Sphere(M_1, Distance[M_1, A])
a = false
ε: abs(sin(atand(m)) / sin(atand(1 / k)))
L_1: S_1 + (1 / ε * Vector[B, S_1])
h_1: z = z(L_1)
kreis_1 = IntersectPath(h_1, gl1)
b: round(1 / k, 1)
L_2: S_2 + (1 / ε * Vector[A, S_2])
h_2: z = z(L_2)
kreis_2 = IntersectPath(h_2, gl1)
d = false
e = false
K_2 = Sphere(M_2, Distance[M_2, B])