Lenses
Author: Lenore Horner

Thin lenses.  Arrows indicate direction of travel of light.  Virtual rays are drawn as dashed lines.

Drag E to move and resize the object.  Drag f to change the focal length.

What happens when the object crosses the focal point?  

What happens when the object gets tall compared to the lens?

When can you get a real image?

f

focal

focal

parallel

f'

parallel

axial

Image

axial

parallel

focal

focal

Image

focal

focal

axial

axial

focal

focal

Object

parallel

parallel

parallel

parallel

A = (0, 6)
B: (0.0, -y(A))
C = (-0.5, 0)
D: (-x(C), 0.0)
c = CircumcircleArc(B, D, A)
d = CircumcircleArc(A, C, B)
E = (-4.125648719066048, 1.6478971898976376)
F = Point(xAxis)
G: (x(E), 0.0)
a = Line(E, F)
H = Intersect(xAxis, yAxis)
I = Intersect(a, yAxis)
b = Line(E, xAxis)
J = Intersect(b, yAxis)
f = Line(I, xAxis)
K: (x(E), -y(E))
v = Vector(E, I)
w = Vector(E, J)
L: (-x(F), 0.0)
e = Line(J, L)
g = Line(E, H)
M = Intersect(g, e)
N: (x(M), 0.0)
z = Vector(N, M)
O = Point(f)
P = Point(g)
i = Vector(I, O)
j = Vector(H, P)
k = Vector(E, H)
l = Line(J, F)
n = Line(E, L)
Q = Intersect(n, yAxis)
p = Vector(E, Q)
q = Line(Q, xAxis)
R = Point(q)
r = Vector(Q, R)
S = Intersect(l, g)
T: (x(S), 0.0)
s = Vector(T, S)
U = Point(e)
V = Point(g)
W = Point(f)
Z = Point(f)
B_1 = Point(g)
C_1 = Point(e)
t = Vector(I, Z)
u_1 = Vector(I, W)
v_1 = Vector(H, V)
w_1 = Vector(H, B_1)
A_1 = Point(q)
D_1 = Point(q)
E_1 = Point(l)
F_1 = Point(l)
d_1 = Vector(Q, A_1)
e_1 = Vector(Q, D_1)
u = Vector(G, E)
h = If(x(E) < 0.0, Vector[If[x(F) < 0.0, Vector[J, L]]])
a_1 = If(x(E) < 0.0, Vector[If[x(F) < 0.0, Vector[J, C_1]]])
z_1 = If(x(E) < 0.0, Vector[If[x(F) < 0.0, Vector[J, U]]])
f_1 = If(x(E) < 0.0, Vector[If[x(F) > 0.0, Vector[J, U]]])
g_1 = If(x(E) < 0.0, Vector[If[x(F) > 0.0, Vector[J, L]]])
h_1 = If(x(E) < 0.0, Vector[If[x(F) > 0.0, Vector[J, C_1]]])
b_1 = If(x(E) > 0.0, Vector[If[x(F) < 0.0, Vector[J, E_1]]])
i_1 = If(x(E) > 0.0, Vector[If[x(F) > 0.0, Vector[J, E_1]]])
m = If(x(E) > 0.0, Vector[If[x(F) < 0.0, Vector[J, F]]])
j_1 = If(x(E) > 0.0, Vector[If[x(F) > 0.0, Vector[J, F]]])
c_1 = If(x(E) > 0.0, Vector[If[x(F) < 0.0, Vector[J, F_1]]])
k_1 = If(x(E) > 0.0, Vector[If[x(F) > 0.0, Vector[J, F_1]]])
G_1 = (0.15564677293113957, -0.016980325512741964)
H_1: (-x(G_1), 0.0)
I_1 = (0.5, 6)
J_1: (-x(I_1), y(I_1))
K_1: (x(I_1), -y(I_1))
L_1: (-x(I_1), -y(I_1))
p_1 = CircumcircleArc(K_1, G_1, I_1)
q_1 = CircumcircleArc(L_1, H_1, J_1)
l_1 = Segment(J_1, I_1)
m_1 = Segment(L_1, K_1)