Spherical-Mirror
Author: Lenore Horner

Ray tracing for spherical mirrors.  Note that real and virtual rays are not distinguished here.

Move D to move the object and to change the size of the object.  Move B to change the focal length of the mirror.

What happens when you move D below the horizontal axis?

What happens as you change the size of the object relative to the size of the mirror? 

What happens when you move the object through the center of curvature (the origin here)?  What about moving through the focal point?  What about moving to the other side of the mirror.

mirror

f

parallel

parallel

axial

axial

focal

focal

focal

central

parallel

parallel

focal

focal

central

central

axial

axial

parallel

parallel

central

central

focal

focal

axial

axial

central

central

B = (0.004551136163784092, 6.4949010935531755)
C: (0.0, -y(B))
A = Intersect(xAxis, yAxis)
c = CircleArc(A, C, B)
F: (y(B) / 2.0, 0.0)
D = (1.8906618342264492, 0.7009469715040664)
E: (x(D), 0.0)
Object = Vector(E, D)
a = Line(D, xAxis)
G = Intersect(c, a, 1.0)
u = Vector(D, G)
b = Line(G, F)
H = Intersect(c, xAxis)
v = Vector(D, H)
I: (x(D), -y(D))
d = Line(H, I)
e = Line(D, F)
J, M = Intersect(c, e)
w = Vector(D, J)
K = Intersect(b, d)
L: (x(K), 0.0)
Image = Vector(L, K)
g = Line(M, xAxis)
z = Vector(D, M)
h = Line(D, A)
O = Point(d)
j = Vector(H, O)
N, A_1 = Intersect(c, h)
Q = Point(b)
R = Point(h)
S = Point(g)
T = Point(d)
U = Point(d)
V = Point(g)
W = Point(h)
Z = Point(b)
i = Vector(G, Q)
l = Vector(G, Z)
m = Vector(M, S)
n = Vector(M, V)
p = Vector(N, W)
q = Vector(N, R)
r = Vector(H, T)
s = Vector(H, U)
t = Vector(D, N)
u_1 = Vector(G, Q)
v_1 = Vector(G, Z)
B_1 = Point(h)
C_1 = Point(h)
w_1 = Vector(A_1, B_1)
z_1 = Vector(A_1, C_1)
f = Line(J, xAxis)
P = Point(f)
D_1 = Point(f)
k = Vector(J, P)
a_1 = Vector(J, D_1)
E_1 = Point(d)
b_1 = Vector(H, E_1)
F_1 = Point(d)
c_1 = Vector(H, F_1)
G_1 = Point(h)
H_1 = Point(h)
d_1 = If(0.0 < x(D), Vector[If[x(D) < y(B), Vector[D, G_1]]])
e_1 = If(0.0 < x(D), Vector[If[x(D) < y(B), Vector[N, H_1]]])