ConicSection1=Module[{zoom,scale,angle,theta,phi,center,lambda,Xmin,Xmax,Ymin,Ymax,epsilon,x,y,X,R,L,L1,L2,Fx,Ax,Ay,},
Manipulate[
scale=zoom/100;
theta=Pi angle;
Xmin=-10/scale-center;
Xmax=+10/scale-center;
Ymin=-6/scale;
Ymax=+6/scale;
If[epsilon==0,
x=Cos[theta];
y=Sin[theta];
R=scale;
Show[
ParametricPlot[{Cos[phi],Sin[phi]},{phi,-Pi, Pi},PlotRange->{{Xmin, Xmax},{Ymin,Ymax}},PlotLabel->"Circle"],
Plot[{y+Tan[theta](X-x)},{X,Xmin,Xmax},PlotStyle->Dashed],
ListPlot[{{0,0}},PlotMarkers->Automatic,PlotStyle->{Green}],
ListPlot[{{x,y}},PlotMarkers->Automatic,PlotStyle->{Cyan}],
Graphics[Text[Style["F",{Directive[14],FontFamily->"Arial"}],{0,-0.4/scale}]],
Graphics[{Thickness[0.001],Arrowheads[0.015],Arrow[{{x,y},{x-Sin[theta]/R,y+Cos[theta]/R}}]}],
Graphics[{Thickness[0.001],Arrowheads[0.015],Arrow[{{x,y},{x+Cos[theta]/R,y+Sin[theta]/R}}]}],
Graphics[{Red,Thickness[0.001],Arrowheads[0.015],Arrow[{{0,0},{x,y}}]}],
Graphics[{Red,Thickness[0.001],Arrowheads[0.015],Arrow[{{x,y},{0,0}}]}],
Graphics[{Green,Thickness[0.002],Circle[{0,0},If[lambda<0.5,2 lambda,2(1-lambda)]]}],
ImageSize->Large
],
If[epsilon<1,
x=Cos[theta]/(1+epsilon Cos[theta]);
y=Sin[theta]/(1+epsilon Cos[theta]);
Fx=-2 epsilon/(1-epsilon^2);
If[Fx<Xmin,{Ax=Xmin;Ay=y(Xmin-Fx)/(x-Fx)},{Ax=Fx;Ay=0}];
R=scale Sqrt[1+2epsilon Cos[theta]+epsilon^2];
L=2/(1-epsilon^2);
L1=1/(1+epsilon);
L2=1/(1-epsilon);
Show[
ParametricPlot[{Cos[phi]/(1+epsilon Cos[phi]),Sin[phi]/(1+epsilon Cos[phi])},{phi,-Pi, Pi},Exclusions->{1+epsilon Cos[phi]==0},PlotRange->{{Xmin, Xmax},{Ymin,Ymax}},PlotLabel->"Ellipse"],
Plot[{y+(Sin[theta]/(Cos[theta]+epsilon))(X-x)},{X,Xmin,Xmax},PlotStyle->Dashed],
ListPlot[{{0,0},{Fx,0}},PlotMarkers->Automatic,PlotStyle->{Green}],
ListPlot[{{x,y}},PlotMarkers->Automatic,PlotStyle->{Cyan}],
Graphics[Text[Style["F",{Directive[14],FontFamily->"Arial"}],{0,-0.4/scale}]],
Graphics[Text[Style["F",{Directive[14],FontFamily->"Arial"}],{Fx,-0.4/scale}]],
Graphics[{Thickness[0.001],Arrowheads[0.015],Arrow[{{x,y},{x-Sin[theta]/R,y+(Cos[theta]+epsilon)/R}}]}],
Graphics[{Thickness[0.001],Arrowheads[0.015],Arrow[{{x,y},{x+(Cos[theta]+epsilon)/R,y+Sin[theta]/R}}]}],
Graphics[{Red,Thickness[0.001],Arrowheads[0.015],Arrow[{{0,0},{x,y}}]}],
Graphics[{Red,Thickness[0.001],Arrowheads[0.015],Arrow[{{x,y},{Ax,Ay}}]}],
Graphics[{Green,Thickness[0.002],Circle[{0,0},If[lambda<L2/L,L lambda,0],If[lambda>L1/L && lambda<L2/L,{ArcCos[(1/(L lambda)-1)/epsilon],2Pi-ArcCos[(1/(L lambda)-1)/epsilon]},{-Pi,Pi}]]}],
Graphics[{Green,Thickness[0.002],Circle[{-2 epsilon/(1-epsilon^2),0},If[lambda>L1/L, L(1-lambda),0],If[lambda>L1/L && lambda<L2/L,{-ArcCos[(epsilon^2+1-2lambda)/(2 epsilon(1-lambda))],ArcCos[(epsilon^2+1-2lambda)/(2 epsilon(1-lambda))]},{-Pi,Pi}]]}],
Graphics[{Green,Thickness[0.002],Dashed,Circle[{0,0},If[lambda<L2/L,L lambda,0]]}],
Graphics[{Green,Thickness[0.002],Dashed,Circle[{-2 epsilon/(1-epsilon^2),0},If[lambda>L1/L, L(1-lambda),0]]}],
ImageSize->Large
],
If[epsilon>1,
x=Cos[theta]/(1+epsilon Cos[theta]);
y=Sin[theta]/(1+epsilon Cos[theta]);
Fx=-2 epsilon/(1-epsilon^2);
If[x<Fx,{Ax=Xmin;Ay=Ay=y(Xmin-Fx)/(x-Fx)},{Ax=Xmax;Ay=y(Xmax-Fx)/(x-Fx)}];
If[Ay>Ymax,{Ax=Fx+Ymax(x-Fx)/y;Ay=Ymax}];
If[Ay<Ymin,{Ax=Fx+Ymin(x-Fx)/y;Ay=Ymin}];
R=scale Sqrt[1+2epsilon Cos[theta]+epsilon^2];
L=20/scale;
L1=1/(epsilon+1);
Show[
ParametricPlot[{Cos[phi]/(1+epsilon Cos[phi]),Sin[phi]/(1+epsilon Cos[phi])},{phi,-Pi, Pi},Exclusions->{1+epsilon Cos[phi]==0,"Discontinuities"},ExclusionsStyle->{Dashed,Thin,Blue},PlotRange->{{Xmin, Xmax},{Ymin,Ymax}},PlotLabel->"Hyperbola"],
Plot[{y+(Sin[theta]/(Cos[theta]+epsilon))(X-x)},{X,Xmin,Xmax},PlotStyle->Dashed],
ListPlot[{{0,0},{Fx,0}},PlotMarkers->Automatic,PlotStyle->{Green}],
ListPlot[{{x,y}},PlotMarkers->Automatic,PlotStyle->{Cyan}],
Graphics[Text[Style["F",{Directive[14],FontFamily->"Arial"}],{0,-0.4 /scale}]],
Graphics[Text[Style["F",{Directive[14],FontFamily->"Arial"}],{Fx,-0.4 /scale}]],
Graphics[{Thickness[0.001],Arrowheads[0.015],Arrow[{{x,y},{x-Sin[theta]/R,y+(Cos[theta]+epsilon)/R}}]}],
Graphics[{Thickness[0.001],Arrowheads[0.015],Arrow[{{x,y},{x+(Cos[theta]+epsilon)/R,y+Sin[theta]/R}}]}],
Graphics[{Red,Thickness[0.001],Dashed,Line[{{Fx,0},{x,y}}]}],
Graphics[{Red,Thickness[0.001],Arrowheads[0.015],Arrow[{{0,0},{x,y}}]}],
Graphics[{Red,Thickness[0.001],Arrowheads[0.015],Arrow[{{x,y},{Ax,Ay}}]}],
Graphics[{Green,Thickness[0.002],Circle[{0,0},L lambda,If[lambda>L1/L ,{ArcCos[(1/(L lambda)-1)/epsilon],2Pi-ArcCos[(1/(L lambda)-1)/epsilon]},{-Pi,Pi}]]}],
Graphics[{Green,Thickness[0.002],Circle[{-2 epsilon/(1-epsilon^2),0},If[lambda>L1/L, L lambda+2/(epsilon^2-1),0],If[lambda>L1/L,{Pi-ArcCos[(epsilon^2+1+L lambda(epsilon^2-1))/( epsilon(L lambda(epsilon^2-1)+2))],Pi+ArcCos[(epsilon^2+1+L lambda(epsilon^2-1))/( epsilon(L lambda(epsilon^2-1)+2))]},{0,0}]]}],
Graphics[{Green,Thickness[0.002],Dashed,Circle[{2 epsilon/(epsilon^2-1),0},If[lambda>L1/L,L lambda+2/(epsilon^2-1),0]]}],
Graphics[{Green,Thickness[0.002],Dashed,Circle[{0,0},L lambda]}],
ImageSize->Large
],
x=Cos[theta]/(1+Cos[theta]);
y=Sin[theta]/(1+Cos[theta]);
R=Sqrt[2(1+Cos[theta])];
L=20/scale;
L1=1/2;
Show[
ParametricPlot[{(1-Y^2)/2,Y},{Y,Ymin,Ymax},PlotRange->{{Xmin, Xmax},{Ymin,Ymax}},PlotLabel->"Parabola"],
Plot[{y+(Sin[theta]/(Cos[theta]+epsilon))(X-x)},{X,Xmin,Xmax},PlotStyle->Dashed],
ParametricPlot[{1,Y},{Y,Ymin,Ymax},PlotStyle->{Green}],
ListPlot[{{0,0}},PlotMarkers->Automatic,PlotStyle->{Green}],
ListPlot[{{x,y}},PlotMarkers->Automatic,PlotStyle->{Cyan}],
Graphics[Text[Style["F",{Directive[14],FontFamily->"Arial"}],{0,-0.4 /scale}]],
Graphics[{Thickness[0.001],Arrowheads[0.015],Arrow[{{x,y},{x-Sin[theta]/R,y+(Cos[theta]+1)/R}}]}],
Graphics[{Thickness[0.001],Arrowheads[0.015],Arrow[{{x,y},{x+(Cos[theta]+1)/R,y+Sin[theta]/R}}]}],
Graphics[{Red,Thickness[0.001],Arrowheads[0.015],Arrow[{{0,0},{x,y}}]}],
Graphics[{Red,Thickness[0.001],Arrowheads[0.015],Arrow[{{x,y},{Xmin,y}}]}],
Graphics[{Red,Thickness[0.001],Dashed,Line[{{x,y},{1,y}}]}],
Graphics[{Green,Thickness[0.002],Circle[{0,0},L lambda,If[lambda>L1/L ,{ArcCos[(1/(L lambda)-1)],2Pi-ArcCos[(1/(L lambda)-1)]},{-Pi,Pi}]]}],
Graphics[{Green,Thickness[0.002],Line[If[lambda>L1/L,{{1-L lambda,-Sqrt[2 L lambda-1]},{1-L lambda,Sqrt[2 L lambda-1]}},{{0,0},{0,0}}]]}],
Graphics[{Green,Thickness[0.002],Dashed,Line[{{1-L lambda,Ymin},{1-L lambda,Ymax}}]}],Graphics[{Green,Thickness[0.002],Dashed,Circle[{0,0},L lambda]}],
ImageSize->Large
]
]
]
],
{{epsilon,0,"Eccentricity ϵ"},0,2,0.01,Appearance->"Labeled"},{{angle,0,"Reflection Point θ/π"},-1+0.001,1-0.001,Appearance->"Labeled"},
{{lambda,0,"Wave Front Location"},0,1},{{zoom,100,"Zoom (%)"},50,400,1,Appearance->"Labeled"},{{center,0,"Horizontal Shift"},-10,10},LabelStyle->{Directive[12],FontFamily->"Arial"}
]
]

Export["ConicSection1.cdf",ConicSection1,"CDF"]