Application Center - Maplesoft

App Preview:

Classroom Tips and Techniques: Caustics for a Plane Curve

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application




 

Classroom Tips and Techniques: Caustics for a Plane Curve

``

Robert J. Lopez

Emeritus Professor of Mathematics and Maple Fellow

Maplesoft``

NULL

Introduction

 

NULL

A caustic is the envelope of lines reflected from a plane curve. If a line from a fixed point P to a point Q on a curve C "reflects" in such a way that the angle of incidence with the normal to C equals the angle of reflection, then the envelope of all such lines emanating from P and reflecting at C is called a caustic.

 

In an earlier article (Sliders for Parameter-Dependent Curves) we showed several ways Maple could produce graphs of parameter-dependent curves. In particular, we used sliders to control the parameters in the limaçon and in the conchoid of a plane curve. In this article, we examine the caustics of a plane curve, and show how Maple can be used to visualize the parameter-dependence of such curves.

 

Parametric Representation of a Caustic

 

NULL

Let P:a, b be a fixed point not on the plane curve C that is given by y = f(x). Let Q on C have coordinates t, f(t). (See Figure 1.) Then U = (a-t)*i+(b-f(t))*j is a vector from Q to P. The component of U along n, the normal to C at Q, is U[n] = (U.n)*n/(n.n), and its orthogonal complement is U-U[n]. The reflection of U across n is then

 

V = v[1]*i+v[2]*j and v[1]*i+v[2]*j = 2*U[n]-U and 2*U[n]-U = 2*U[n]-U  

 

An equation for L, the line along V, is (x-t)/(y-f(t)) = v[1]/v[2], or `≡`(F(x, y, t), (x-t)/(y-f(t)))-v[1]/v[2] = 0.

NULL

The envelope of all such lines L is defined parametrically as x(t), y(t) by the equations F=0=(∂F)/(∂t).

 

Imagining C to be concave up, we take its normal at Q as n = -(D(f))(t)*i+j. The caustic is now completely determined by f(x) and the point P. Although Maple can provide explicit expressions for x(t) and y(t), these expressions are very large and unwieldy. As we attempt to draw caustics for some test curves, we find that it is more efficient to apply to each specific function the calculations just detailed.

 


 

Figure 1   The curve C, the points P and Q, and the vectors U, n (red), U[n] (green) and U-U[n] (gold)

 

``

A General Representation of a Caustic

 

``

Table 1 summarizes the calculations needed for obtaining the general parametric expressions for a caustic. The Student LinearAlgebra package is used to coerce the dot product operator to treat all quantities as real, thereby preventing Maple from applying conjugation.

 

• 

Tools_Load Package:
Student Linear Algebra

Loading Student:-LinearAlgebra

• 

Define the normal n.

n := `<,>`(-(D(f))(t), 1)

• 

Define the vector U from Q to P.

U := `<,>`(a-t, b-f(t))

• 

Obtain U[n], the projection of U on n.

Un := (U.n)*n/(n.n)

• 

Obtain V, the reflection of U across n.

V := 2*Un-U

• 

Obtain H(x, y, t), a simplified version of the left-hand side of the equation F(x, y, t) = 0.

H := simplify(numer((x-t)/(y-f(t))-V[1]/V[2]))

• 

Obtain the envelope of the family of lines L defined by H(x, y, t) = 0. Since this expression will contain both D and diff, convert all derivatives to a single form (diff).

S := convert(solve({H = 0, diff(H, t) = 0}, {x, y}), diff)

``

• 

Extract x(t) and y(t).

Xt := eval(x, S); Yt := eval(y, S)

Table 1   General representation of a caustic

 

 

The reader is free to inspect the expressions for x(t) and y(t). They are too large to include here. Alternatively, we evaluate x(t) for the parabola f(x) = x^2 and P:1, 1.

``

eval(Xt, [f(t) = t^2, a = 1, b = 1]) = (-1+6*t-t^2+4*t^3-80*t^5+48*t^6+24*t^4)/(-36*t^4+32*t^5-16*t^3+19*t^2+7-6*t)

``

The caustic of even a parabola is a complicated curve, as suggested by Figure 2, a graph of just x(t).

 

plot((-1+6*t-t^2+4*t^3-80*t^5+48*t^6+24*t^4)/(-36*t^4+32*t^5-16*t^3+19*t^2+7-6*t), t = -2 .. 2, -10 .. 10, discont = true)

Figure 2   Graph of x(t) for the caustic of y = x^2

 

``

A Tool for Caustic Curves

 

``

The following tool, built with Embedded Components, provides the caustic for a given curve and fixed point. As the fixed point, indicated by the green dot in the figure, is dragged about the plotting window, the corresponding caustic curve is superimposed (in red) on the black graph of the given curve. Vertical bounds are critical since the parametric representations of the caustics can, for small values of the parameter, have remarkably large values.

NULLNULL

The code for any component can be seen by selecting "Component Properties" from the Context Menu for the component. The "Initial Caustic" button serves as an initializer; press it after making changes in the data. The fixed point P returns to the geometric center of the plot window, and the corresponding caustic is displayed.

 

f(x)=  

NULL

`` <=x<=  NULL

             

 

`` <=y<= 

              

 

       

 

NULL

As we designed and tested this tool, we used x^2, x^4, and sin(x) as test cases. As the fixed point is moved across the curve C, the caustic that results can assume some very complicated shapes.

``

Visualizing the Reflections

 

``

Given the unusual shapes some caustics assume, it behooved us to verify that these curves were indeed tangent to the lines of reflection. We considered controlling the reflected line with a slider as per the devices detailed in the earlier article (Sliders for Parameter-Dependent Curves), but opted instead for a simpler approach afforded by the animate command. The code in Table 2 generates a caustic for a given fixed point; the resulting graph is used as a background for the animation of the line of reflection.

 

restart; with(plots); f := t^4; a, b := -1/2, -1; U := `<,>`(a-t, b-f); n := `<,>`(-(diff(f, t)), 1); Un := (U.n)*n/(n.n); V := `assuming`([simplify(2*Un-U)], [real]); H := numer(normal((x-t)/(y-f)-V[1]/V[2])); S := solve({H, diff(H, t)}, {x, y}); X := eval(x, S); Y := eval(y, S); p[1] := plot([X, Y, t = -1 .. 1], thickness = 1, view = [-1 .. 1, -2 .. 2], discont = true); p[2] := plot(f, t = -1 .. 1, color = black); p[3] := plot([[a, b]], style = point, symbol = solidcircle, symbolsize = 15, color = green); p[4] := display([p[1], p[2], p[3]], scaling = constrained)

Table 2   Code that graphs a caustic for a given fixed point

 

``

Figure 2 contains the animation of the (blue) line of reflection for a given caustic. The slider in the animation toolbar will control the movement of the line across the caustic. At each point along the caustic, the blue line is tangent. Hence, the caustic is the envelope of all such lines.

 

animate(implicitplot, [H, x = -1 .. 1, y = -2 .. 2, color = blue], t = -1 .. 1, background = p[4], frames = 101)

``

Figure 3   Animation of the line of reflection

 

 

The commands that generate Figures 1-3 are hidden in the table cells that contain the figures.

``

 

Legal Notice: © Maplesoft, a division of Waterloo Maple Inc. 2012. Maplesoft and Maple are trademarks of Waterloo Maple Inc. This application may contain errors and Maplesoft is not liable for any damages resulting from the use of this material. This application is intended for non-commercial, non-profit use only. Contact Maplesoft for permission if you wish to use this application in for-profit activities.

NULL