Odraz rovinné vlnoplochy od dutého kulového zrcadla

on - off

reset

elementární vlnoplochy

paprsky

body

Dopadající vlnoplocha je rovinná.
Výsledná vlnoplocha (obálka elementárních vlnoploch) už rovinná není - to by zrcadlo muselo být rovinné.
Není ani kulová - to by zrcadlo muselo být parabolické a paprsky by se všechny seběhly ve stejném okamžiku v ohnisku.
U kulového projde ohniskem jen paprskek splývající s osou.
Odražená vlnoplocha je v řezu část Descartova oválu.

závěr

sirka = 0.95 (slider from 0.3 to 2, step 0.01)
b = 0.1205 (slider from 0 to 0.5, step 0.001)
p = 3 (slider from -5 to 5, step 0.1)
a = 1 (slider from -5 to 5, step 0.1)
c: (y * y) = (((-2) * p) * x) - ((a * x) * x)
body1 = Sequence(((-4), i), i, (-p) + sirka, p - sirka, b)
A = Center(c)
seznam2 = Sequence(Line[Element[body1, i], Element[body1, i] + (1, 0)], i, 1, 70)
body2 = Sequence(Intersect[c, Element[seznam2, i], 2], i, 1, 70)
t = 0.5 (slider from 0.5 to 7.5, step 0.001)
seznam1 = Sequence(Circle[Element[body1, i], t], i, 1, 70)
papdopad = Sequence(Vector[Element[body1, i], Element[body1, i] + (t, 0)], i, 1, 70)
u = Element(papdopad, 1)
v = Element(papdopad, 2)
w = Element(papdopad, 3)
d = Element(papdopad, 4)
e = Element(papdopad, 5)
f = Element(papdopad, 6)
g = Element(papdopad, 7)
h = Element(papdopad, 8)
i = Element(papdopad, 9)
j = Element(papdopad, 10)
k = Element(papdopad, 11)
l = Element(papdopad, 13)
m = Element(papdopad, 14)
n = Element(papdopad, 15)
q = Element(papdopad, 16)
r = Element(papdopad, 17)
s = Element(papdopad, 18)
u_1 = Element(papdopad, 19)
v_1 = Element(papdopad, 20)
w_1 = Element(papdopad, 21)
a_1 = Element(papdopad, 22)
b_1 = Element(papdopad, 23)
c_1 = Element(papdopad, 24)
d_1 = Element(papdopad, 25)
e_1 = Element(papdopad, 26)
f_1 = Element(papdopad, 27)
g_1 = Element(papdopad, 28)
h_1 = Element(papdopad, 29)
i_1 = Element(papdopad, 23)
j_1 = Element(papdopad, 24)
k_1 = Element(papdopad, 25)
l_1 = Element(papdopad, 26)
m_1 = Element(papdopad, 27)
n_1 = Element(papdopad, 28)
p_1 = Element(papdopad, 29)
q_1 = Element(papdopad, 30)
r_1 = Element(papdopad, 31)
s_1 = Element(papdopad, 32)
t_1 = Element(papdopad, 33)
u_2 = Element(papdopad, 34)
v_2 = Element(papdopad, 35)
w_2 = Element(papdopad, 36)
a_2 = Element(papdopad, 37)
b_2 = Element(papdopad, 38)
c_2 = Element(papdopad, 39)
d_2 = Element(papdopad, 40)
e_2 = Element(papdopad, 41)
f_2 = Element(papdopad, 42)
g_2 = Element(papdopad, 43)
h_2 = Element(papdopad, 44)
i_2 = Element(papdopad, 45)
j_2 = Element(papdopad, 46)
k_2 = Element(papdopad, 47)
l_2 = Element(papdopad, 48)
m_2 = Element(papdopad, 49)
n_2 = Element(papdopad, 50)
p_2 = Element(papdopad, 51)
q_2 = Element(papdopad, 52)
r_2 = Element(papdopad, 53)
s_2 = Element(papdopad, 54)
t_2 = Element(papdopad, 55)
u_3 = Element(papdopad, 56)
v_3 = Element(papdopad, 57)
w_3 = Element(papdopad, 58)
a_3 = Element(papdopad, 59)
c_3 = Element(papdopad, 12)
vzd = Sequence(Distance[Element[body1, i], Element[body2, i]], i, 1, 70)
o = Dimension(a_1)
seznam3 = Sequence(If[Distance[Element[body1, i], Element[body2, i]] ≤ t, 0, 1], i, 1, 70)
seznam4 = Sequence(Segment[A, Element[body2, i]], i, 1, 70)
seznam5 = Sequence(Mirror[Element[seznam2, i], Element[seznam4, i]], i, 1, 70)
seznam6 = Sequence(Circle[Element[body2, i], t - Element[vzd, i]], i, 1, 70)
F: (((-p)) / 2, 0)
x0 = 10 (slider from -5 to 10, step 0.1)
k_3 = 6.8 (slider from -10 to 10, step 0.1)
o_1: ((4 * k_3^(2)) * ((x + p / 2)^(2) + y^(2))) = (k_3^(2) - (x0^(2) - ((2 * x0) * (x + p / 2))) + (x + p / 2)^(2) + y^(2))^(2)
Pr = Sequence(Intersect[Element[seznam6, i], Element[seznam5, i], 1], i, 1, 70)
seznam7 = Sequence(Vector[Element[body2, i], Element[Pr, i]], i, 1, 70)
S, C = Focus(c)
on = 0
anim = 0.5 (slider from 0.1 to 0.5, step 0.1)
stredy = Sequence(Center[Element[seznam6, i]], i, 1, 70)
o_2 = true
b_3 = true
B: Element[body1, 42] + f_2
D: Element[body1, 41] + e_2
d_3 = true
G: Element[body1, 40] + d_2
H = Point(c)
H' = Mirror(H, xAxis)
e_3 = CircleArc(A, H', H)
f_3 = false