Parabolic and Spherical Mirrors
Author: Lenore Horner

Red lines are incoming light rays.  Blue lines are reflections off the spherical mirror.  Yellow lines are reflections off the parabolic mirror.

Notice that the 4 blue lines do not always intersect at a common point as you change the radius r.  This is spherical aberration.  In contrast, the yellow lines always meet at a common point as you vary p.

Vary r and p by clicking-and-dragging the point on the slider line.

parabolic mirror

spherical mirror

p = 1.5 (slider from -5 to 5, step 0.1)
r = 20 (slider from 0 to 20, step 0.1)
f(x) = x^(2.0) / (4.0 * p)
g(x) = -sqrt(r^(2.0) - x^(2.0)) + r
A = (-4, 5)
B = (-0.5, 5)
C = (0.5, 5)
D = (4, 5)
a = Line(A, yAxis)
b = Line(B, yAxis)
c = Line(C, yAxis)
d = Line(D, yAxis)
E = Intersect(f, d)
F = Intersect(g, d, (4.0, 0.40408205773457695))
G = Intersect(f, c)
H = Intersect(g, c, (0.5, 0.006250976867793412))
I = Intersect(f, b)
J = Intersect(f, a)
K = Intersect(g, a, (-4.0, 0.40408205773457695))
L = Intersect(g, b, (-0.5, 0.006250976867793412))
e = Tangent(E, f)
h = Tangent(F, g)
i = Tangent(K, g)
j = Tangent(J, f)
k = Tangent(G, f)
l = Tangent(H, g)
m = Tangent(I, f)
n = Tangent(L, g)
q = OrthogonalLine(I, m)
s = OrthogonalLine(L, n)
t = OrthogonalLine(G, k)
a_1 = OrthogonalLine(H, l)
b_1 = OrthogonalLine(E, e)
M = Intersect(g, h, (3.999999772476893, 0.40408201129161725))
c_1 = OrthogonalLine(F, h)
d_1 = OrthogonalLine(K, i)
e_1 = OrthogonalLine(J, j)
a'_1 = Mirror(a, d_1)
a' = Mirror(a, e_1)
d'_1 = Mirror(d, b_1)
d' = Mirror(d, c_1)
b'_1 = Mirror(b, s)
b' = Mirror(b, q)
c'_1 = Mirror(c, a_1)
c' = Mirror(c, t)
N = Intersect(c'_1, b'_1)
O = Intersect(a'_1, d')
P = Intersect(b', c')
u = Vector(E, P)
v = Vector(M, O)
w = Vector(K, O)
z = Vector(J, P)
u_1 = Vector(G, P)
v_1 = Vector(I, P)
w_1 = Vector(L, N)
z_1 = Vector(H, N)
f_1 = Vector(A, J)
g_1 = Vector(A, K)
h_1 = Vector(B, L)
i_1 = Vector(C, H)
j_1 = Vector(D, E)
k_1 = Vector(D, M)