6.4 Modeling a Cassegrain Telescope

In this section, we model a Cassegrain telescope with LensLab, including the primary and secondary mirror objectives. For this example, we combine several component functions into a special function that we call CassegrainTelescope. Within CassegrainTelescope, we use CylinderGraphic to create the telescope housing shroud. As inputs to CassegrainTelescope, we use the f/number of the system, the diameter of the primary mirror, the diameter of the secondary mirror, and the desired position in space of the eyepiece focal point. We now define CassegrainTelescope.

Clear[CassegrainTelescope];

inch = 25.4;

CassegrainTelescope[fnumber_,bigdiameter_,
	smalldiameter_,eyepieceposition_,options___]:=
Block[{bigmirrorthickness,smallmirrorthickness,focallength1,
	focallength2,gamma,position,holediameter},
bigmirrorthickness = bigdiameter/10;
smallmirrorthickness = smalldiameter/10;
focallength1 = fnumber bigdiameter;
position = N[smalldiameter focallength1 / bigdiameter];
gamma = N[(focallength1 - position + eyepieceposition + 
	bigmirrorthickness)/position];
focallength2 = -N[position gamma/(gamma - 1)];
holediameter = N[.75 smalldiameter];
{Move[ParabolicMirrorWithHole[focallength1, bigdiameter,holediameter,bigmirrorthickness, options],-focallength1,180],
Move[ParabolicMirror[focallength2,smalldiameter, smallmirrorthickness,options], -position],
Move[CylinderGraphic[bigdiameter,-N[.1 bigdiameter+.1 smalldiameter+focallength1-position],options], {-position + .05 bigdiameter,0,0}],
Boundary[{-N[1.25(focallength1+eyepieceposition)], -bigdiameter/2,-bigdiameter/2}, {1.5eyepieceposition,bigdiameter/2,bigdiameter/2}]}];

Next, we use DrawSystem to trace a circle of rays through CassegrainTelescope.

DrawSystem[
Move[{Move[CircleOfRays[15 inch, NumberOfRays->6],15 inch,180],
	CassegrainTelescope[2.5,20 inch,4 inch,10 inch, OpenSide->{-.25 Pi,1.3 Pi}, GraphicDesign->Solid]},
	{0,0,90}],Boxed->False];

Finally, we use PlotType->Surface with RayChoice->{IntersectionNumber->2} to examine the ray intersection points on the secondary mirror surface.

ShowSystem[%,PlotType->Surface, RayChoice->{IntersectionNumber->2}];

In Chapter 7, you can learn more about designing optical systems using LensLab and Mathematica.