(*^ ::[ Information = "This is a Mathematica Notebook file. It contains ASCII text, and can be transferred by email, ftp, or other text-file transfer utility. It should be read or edited using a copy of Mathematica or MathReader. If you received this as email, use your mail application or copy/paste to save everything from the line containing (*^ down to the line containing ^*) into a plain text file. On some systems you may have to give the file a name ending with ".ma" to allow Mathematica to recognize it as a Notebook. The line below identifies what version of Mathematica created this file, but it can be opened using any other version as well."; FrontEndVersion = "Macintosh Mathematica Notebook Front End Version 2.2"; MacintoshStandardFontEncoding; fontset = title, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, e8, 24, "Times"; fontset = subtitle, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, e6, 18, "Times"; fontset = subsubtitle, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeTitle, center, M7, italic, e6, 14, "Times"; fontset = section, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, grayBox, M22, bold, a20, 18, "Times"; fontset = subsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, blackBox, M19, bold, a15, 14, "Times"; fontset = subsubsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, whiteBox, M18, bold, a12, 12, "Times"; fontset = text, inactive, nohscroll, noKeepOnOnePage, preserveAspect, cellOutline, M12, N-4, r58981, g58981, b58981, 10, "Courier"; fontset = smalltext, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 10, "Times"; fontset = input, noPageBreakInGroup, nowordwrap, preserveAspect, cellOutline, groupLikeInput, M42, N23, R22721, G77, B369, L-5, 10, "Courier"; fontset = output, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L-5, 12, "Courier"; fontset = message, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, R65535, L-5, 12, "Courier"; fontset = print, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L-5, 12, "Courier"; fontset = info, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, B65535, L-5, 12, "Courier"; fontset = postscript, PostScript, formatAsPostScript, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeGraphics, M7, l34, w280, h280, 12, "Courier"; fontset = name, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, italic, 10, "Geneva"; fontset = header, inactive, noKeepOnOnePage, preserveAspect, M7, 12, "Times"; fontset = leftheader, inactive, L2, 12, "Times"; fontset = footer, inactive, noKeepOnOnePage, preserveAspect, center, M7, 12, "Times"; fontset = leftfooter, inactive, L2, 12, "Times"; fontset = help, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 10, "Times"; fontset = clipboard, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 12, "Times"; fontset = completions, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 12, "Times"; fontset = special1, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 12, "Times"; fontset = special2, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 12, "Times"; fontset = special3, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 12, "Times"; fontset = special4, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 12, "Times"; fontset = special5, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 12, "Times"; paletteColors = 128; currentKernel; ] :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] Note :[font = text; inactive; preserveAspect; endGroup] This Mathematica notebook is from the WWW project A Visual Dictionary of Special Plane Curves http://www.best.com/~xah/SpecialPlaneCurves_dir/specialPlaneCurves.html Copyright 1995, 1996 by Xah Lee. (74631.731@compuserve.com; xah@best.com) :[font = title; inactive; preserveAspect] Mathematics of Conic Section :[font = text; inactive; Cclosed; preserveAspect; startGroup] This notebook contain derivations of metric relations of elements in a conic section. For example, given a cone and a plane, * What is the essentricity of the conics so formed? * What are the centers and radii of its Dandelin spheres? * What are the distances from the vertex of the cone to the foci? These information are used in writing programs that generates 3D illustrations. :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] Symbols used :[font = text; inactive; preserveAspect; endGroup] Let alpha be the angle of the axis of the cone and its elements. Let theta be the angle of the axis and the cutting plane. Let v0 be the vertex of the cone. Let n0 be the point on the cutting plane nearest to v0. Let v0n0 be the distance from the vertex of the cone to the cutting plane. Let v1 and v2 be the vertexes of the conic section. (labeled so that v1 is closer to v0) (this is the nearest or farthest points on the conic section to v0) Let f1 and f2 be the foci of the conic section. (labeled so that f1 is closer to v1) (this is where the Dandelin spheres touches the cutting plane) (if it is a parabola, f2 and v2 are at Infinity) Let c0 be the center of the conic section. (this is the midpoint between v1 and v2) Let b0 be the point where the axis of the cone intersects the cutting plane. Let v0v1 be the distance from v0 to v1. Let v0v2 be the distance from v0 to v2. Let c1 be the center of the smaller tangent circle. Let c2 be the center of the other tangent circle. (tangent circle is the intersection of the cone and the Dandelin spheres) Let j1 be a point on the smaller tangent circle nearest to v1. Let j2 be a point on the larger tangent circle nearest to v2. (if theta == Pi/2, then there's no nearest point. Then pick any point on the tangent circle for j1. The exact position of j1 is not important. We just want a lable so we can consistantly write its radius as c1j1. Similar things can be said for j2.) Let c1j1 and c2j2 be the radii of the tangent circles. Let s1 and s2 be the centers of Dandelin spheres. Let s1j1 and s2j2 be the radii of the first and second Dandelin spheres. Let v0s1 be the distance from v0 to s1. Let v0s2 be the distance from v0 to s2. Let v0c1 be the distance from the v0 to c1. Let v0c2 be the distance from the v0 to c2. :[font = text; inactive; preserveAspect] Given apha, theta, and v0n0, all the distances between important points are defined. We don't really care about the coordinates of these points, but rather the distances between them because coordinates can vary depending on the position and orientation of the double cone but distances and angles between them are invariant. But to help find these distances, we'll put the whole thing in a 2D coordinate system. Let v0 be at the origin. Let the axes of the cone be the y-axes. The cutting plane is then y == -Tan[Pi/2-theta] x + v0n0/Sin[theta]. The double cone is then y == Tan[Pi/2-alpha] x y == -Tan[Pi/2-alpha] x :[font = input; preserveAspect] v0 = {0,0}; :[font = text; inactive; preserveAspect] Solving these equations to get the vertexes of the conic section. :[font = input; preserveAspect; startGroup] Solve[ {y == -Tan[Pi/2-theta] x + v0n0/Sin[theta], y == Tan[Pi/2-alpha] x}, {x,y}]//Simplify Solve[ {y == -Tan[Pi/2-theta] x + v0n0/Sin[theta], y == -Tan[Pi/2-alpha] x}, {x,y}]//Simplify :[font = output; output; inactive; preserveAspect] {{x -> v0n0*Csc[alpha + theta]*Sin[alpha], y -> v0n0*Cos[alpha]*Csc[alpha + theta]}} ;[o] {{x -> v0n0 Csc[alpha + theta] Sin[alpha], y -> v0n0 Cos[alpha] Csc[alpha + theta]}} :[font = output; output; inactive; preserveAspect] {{x -> v0n0*Csc[alpha - theta]*Sin[alpha], y -> -(v0n0*Cos[alpha]*Csc[alpha - theta])}} ;[o] {{x -> v0n0 Csc[alpha - theta] Sin[alpha], y -> -(v0n0 Cos[alpha] Csc[alpha - theta])}} :[font = input; preserveAspect] v1 = {v0n0*Csc[alpha + theta]*Sin[alpha], v0n0*Cos[alpha]*Csc[alpha + theta]}; v2 = {v0n0*Csc[alpha - theta]*Sin[alpha], -(v0n0*Cos[alpha]*Csc[alpha - theta])}; :[font = text; inactive; preserveAspect] This result is not surprizing. Observe that they have the form c {Sin[t],Cos[t]}, where c is the distance from the conics' vertex to the cone's vertex. If we approach the problem using synthetic geometry, we'd get the same result perhaps faster and with understanding. Knowing the coordinates for v1 and v2, we can use distance formula to calculate v0v1, v0v2, and v1v2. :[font = input; preserveAspect] Sqrt[Plus@@((v0-v1)^2)] //Simplify Sqrt[Plus@@((v0-v2)^2)] //Simplify Sqrt[ Plus@@((v1-v2)^2)] //Simplify :[font = input; preserveAspect] v0v1 = Sqrt[v0n0^2 Csc[alpha + theta]^2]; v0v2 = Sqrt[v0n0^2 Csc[alpha - theta]^2]; v1v2 = Sqrt[v0n0^2 Csc[alpha - theta]^2 Csc[alpha + theta]^2 Sin[2 alpha]^2]; :[font = text; inactive; preserveAspect] Now let's find the coordinates for n0. The angle {1,0}, {0,0}, and n0 has degree theta. So n0 is {Cos@ theta, Sin@ theta}* v0n0. :[font = input; preserveAspect] n0 = {Cos@ theta, Sin@ theta} v0n0; :[font = text; inactive; preserveAspect] c0 is a point between v1 and v2, therefore c0 = (v1+v2)/2. c0v1 is calculated by distance formula. :[font = input; preserveAspect] c0 = {v0n0*Cos[theta]*Csc[alpha - theta]*Csc[alpha + theta]*Sin[alpha]^2, -(v0n0*Cos[alpha]^2*Csc[alpha - theta]* Csc[alpha + theta]*Sin[theta]) }; :[font = input; preserveAspect; startGroup] Sqrt[Plus@@((v1-c0)^2)]//Simplify :[font = output; output; inactive; preserveAspect; endGroup] (v0n0^2*Csc[alpha - theta]^2*Csc[alpha + theta]^2* Sin[2*alpha]^2)^(1/2)/2 ;[o] 2 2 2 Sqrt[v0n0 Csc[alpha - theta] Csc[alpha + theta] 2 Sin[2 alpha] ] / 2 :[font = input; preserveAspect] c0v1 = Sqrt[v0n0^2*Csc[alpha - theta]^2*Csc[alpha + theta]^2*Sin[2*alpha]^2]/2; :[font = text; inactive; preserveAspect] Since the conics so cut will have eccentricity e := Cos[theta]/Cos[alpha], and we know that e = c/a, so c = a e. Now we know both a and e. In our context, a is c0v1 and c is c0f1. c0f1 is then c0v1 Cos[theta]/Cos[alpha]. :[font = input; preserveAspect; startGroup] c0v1 Cos[theta]/Cos[alpha] :[font = output; output; inactive; preserveAspect; endGroup] (Cos[theta]*Sec[alpha]*(v0n0^2*Csc[alpha - theta]^2* Csc[alpha + theta]^2*Sin[2*alpha]^2)^(1/2))/2 ;[o] 2 2 (Cos[theta] Sec[alpha] Sqrt[v0n0 Csc[alpha - theta] 2 2 Csc[alpha + theta] Sin[2 alpha] ]) / 2 :[font = input; preserveAspect] c0f1 = (Cos[theta]*Sec[alpha]*(v0n0^2*Csc[alpha - theta]^2* Csc[alpha + theta]^2*Sin[2*alpha]^2)^(1/2))/2; :[font = text; inactive; preserveAspect] To find the coordinates of f1 and f2, we use concept of vectors. If V is the unit vector of v1-c0, f1 is then V* c0f1 + c0. Similarly for f2. :[font = input; preserveAspect; endGroup] unitV[v_]:= v/Sqrt[v.v] :[font = input; preserveAspect; startGroup] Simplify[ unitV[v1-c0] c0f1 + c0] :[font = output; output; inactive; preserveAspect; endGroup] {(v0n0*Cos[theta]*Csc[(alpha + theta)/2]* Sec[(alpha - theta)/2]*Sin[alpha])/2, (v0n0*(2 + Cos[alpha - theta] - Cos[alpha + theta])* Csc[(alpha + theta)/2]*Sec[(alpha - theta)/2])/4} ;[o] alpha + theta alpha - theta {(v0n0 Cos[theta] Csc[-------------] Sec[-------------] 2 2 Sin[alpha]) / 2, (v0n0 (2 + Cos[alpha - theta] - Cos[alpha + theta]) alpha + theta alpha - theta Csc[-------------] Sec[-------------]) / 4} 2 2 :[font = input; preserveAspect] f1 = {(v0n0*Cos[theta]*Csc[(alpha + theta)/2]* Sec[(alpha - theta)/2]*Sin[alpha])/2, (v0n0*(2 + Cos[alpha - theta] - Cos[alpha + theta])* Csc[(alpha + theta)/2]*Sec[(alpha - theta)/2])/4}; :[font = input; preserveAspect; startGroup] Simplify[ unitV[v2-c0] c0f1 + c0] :[font = output; output; inactive; preserveAspect; endGroup] {(v0n0*Cos[theta]*Csc[(alpha - theta)/2]* Sec[(alpha + theta)/2]*Sin[alpha])/2, (v0n0*(-2 + Cos[alpha - theta] - Cos[alpha + theta])* Csc[(alpha - theta)/2]*Sec[(alpha + theta)/2])/4} ;[o] alpha - theta alpha + theta {(v0n0 Cos[theta] Csc[-------------] Sec[-------------] 2 2 Sin[alpha]) / 2, (v0n0 (-2 + Cos[alpha - theta] - Cos[alpha + theta]) alpha - theta alpha + theta Csc[-------------] Sec[-------------]) / 4} 2 2 :[font = input; preserveAspect] f2 = {(v0n0*Cos[theta]*Csc[(alpha - theta)/2]* Sec[(alpha + theta)/2]*Sin[alpha])/2, (v0n0*(-2 + Cos[alpha - theta] - Cos[alpha + theta])* Csc[(alpha - theta)/2]*Sec[(alpha + theta)/2])/4}; :[font = text; inactive; preserveAspect] Use distance formula to calculate the distance from v0 to f1 or f2, and v1f1. :[font = input; preserveAspect; startGroup] Sqrt[Plus@@((f1-v0)^2)] :[font = output; output; inactive; preserveAspect; endGroup] ((v0n0^2*Cos[alpha]^4*Csc[(alpha + theta)/2]^2* Sec[(alpha - theta)/2]^2)/4 + (v0n0^2*(2 + Cos[alpha - theta] - Cos[alpha + theta])^2* Csc[(alpha + theta)/2]^2*Sec[(alpha - theta)/2]^2* Sec[theta]^2*Sin[alpha]^2)/16)^(1/2) ;[o] 2 4 alpha + theta 2 v0n0 Cos[alpha] Csc[-------------] 2 alpha - theta 2 Sec[-------------] 2 Sqrt[--------------------------------------------------------- 4 2 + (v0n0 (2 + Cos[alpha - theta] - Cos[alpha + theta]) 2 alpha + theta 2 alpha - theta 2 Csc[-------------] Sec[-------------] 2 2 2 2 Sec[theta] Sin[alpha] ) / 16] :[font = input; preserveAspect] v0f1 = ((v0n0^2*Cos[alpha]^4*Csc[(alpha + theta)/2]^2* Sec[(alpha - theta)/2]^2)/4 + (v0n0^2*(2 + Cos[alpha - theta] - Cos[alpha + theta])^2* Csc[(alpha + theta)/2]^2*Sec[(alpha - theta)/2]^2* Sec[theta]^2*Sin[alpha]^2)/16)^(1/2); :[font = input; preserveAspect; startGroup] Sqrt[Plus@@((f2-v0)^2)] :[font = output; output; inactive; preserveAspect; endGroup] ((v0n0^2*Cos[alpha]^4*Csc[(alpha + theta)/2]^2* Sec[(alpha - theta)/2]^2)/2 + (v0n0^2*(2 + Cos[alpha - theta] - Cos[alpha + theta])^2* Csc[(alpha + theta)/2]^2*Sec[(alpha - theta)/2]^2* Sec[theta]^2*Sin[alpha]^2)/8)^(1/2) ;[o] 2 4 alpha + theta 2 v0n0 Cos[alpha] Csc[-------------] 2 alpha - theta 2 Sec[-------------] 2 Sqrt[--------------------------------------------------------- 2 2 + (v0n0 (2 + Cos[alpha - theta] - Cos[alpha + theta]) 2 alpha + theta 2 alpha - theta 2 Csc[-------------] Sec[-------------] 2 2 2 2 Sec[theta] Sin[alpha] ) / 8] :[font = input; preserveAspect] v0f2 = ((v0n0^2*Cos[alpha]^4*Csc[(alpha + theta)/2]^2* Sec[(alpha - theta)/2]^2)/2 + (v0n0^2*(2 + Cos[alpha - theta] - Cos[alpha + theta])^2* Csc[(alpha + theta)/2]^2*Sec[(alpha - theta)/2]^2* Sec[theta]^2*Sin[alpha]^2)/8)^(1/2); :[font = input; preserveAspect] Sqrt[Plus@@((f1-v1)^2)] //Simplify :[font = output; output; inactive; preserveAspect] (v0n0^2*Sec[(alpha - theta)/2]^2*Sec[(alpha + theta)/2]^2* Sin[alpha]^2)^(1/2)/2 ;[o] 2 alpha - theta 2 alpha + theta 2 Sqrt[v0n0 Sec[-------------] Sec[-------------] 2 2 2 Sin[alpha] ] / 2 :[font = input; preserveAspect] v1f1 = (v0n0^2*Sec[(alpha - theta)/2]^2*Sec[(alpha + theta)/2]^2*Sin[alpha]^2)^(1/2)/2; :[font = text; inactive; preserveAspect] Use analytic geometry to find b0 (the intersection of the cutting plane and the axis of the cone), by solving the system of equation x==0, and equation of the cutting plane y == -Tan[Pi/2-theta] x + v0n0/Sin[theta] :[font = input; preserveAspect] b0 = {0, v0n0 Csc[theta]}; v0b0 = Abs[v0n0 Csc[theta]]; :[font = text; inactive; preserveAspect] Coordinates for s1 and s2 can also be found by solving system of linear equations. :[font = input; preserveAspect] s1 = {0, (v0n0 Csc[(alpha + theta)/2] Sec[(-alpha + theta)/2])/2}; s2 = {0, -(v0n0 Csc[(alpha - theta)/2] Sec[( alpha + theta)/2])/2}; :[font = input; preserveAspect] s1j1 = Abs[(v0n0 Csc[(alpha + theta)/2] Sec[(alpha - theta)/2] Sin[alpha])/2]; s2j2 = Abs[(v0n0 Csc[(alpha - theta)/2] Sec[(alpha + theta)/2] Sin[alpha])/2]; :[font = input; preserveAspect; startGroup] v0s1 = (v0n0 Csc[(alpha + theta)/2] Sec[(-alpha + theta)/2])/2; v0s2 = -(v0n0 Csc[(alpha - theta)/2] Sec[( alpha + theta)/2])/2; :[font = text; inactive; preserveAspect] We know that v0, s1, and j1 forms a right triangle, and we know one side v0s1, and the angle at v0 to be alpha. so that v0j1 == v0s1 Cos[alpha] v0j2 == v0s2 Cos[alpha] :[font = input; preserveAspect] v0j1 = (v0n0 Csc[(alpha + theta)/2] Sec[(-alpha + theta)/2])/2 Cos[alpha]; v0j2 = -(v0n0 Csc[(alpha - theta)/2] Sec[( alpha + theta)/2])/2 Cos[alpha]; :[font = text; inactive; preserveAspect] Now c0, s1, and j1 is a right triangle too. Same method we use to find v0c1 and v0c2. They are v0c1 == v0j1 Cos[alpha] v0c2 == v0j2 Cos[alpha] c1j1 == v0j1 Sin[alpha] c2j2 == v0j2 Sin[alpha] :[font = input; preserveAspect; endGroup] v0c1 = (v0n0 Csc[(alpha + theta)/2] Sec[(-alpha + theta)/2])/2 Cos[alpha]^2; v0c2 = -(v0n0 Csc[(alpha - theta)/2] Sec[( alpha + theta)/2])/2 Cos[alpha]^2; :[font = input; preserveAspect] c1j1 = (v0n0 Csc[(alpha + theta)/2] Sec[(-alpha + theta)/2])/2 Cos[alpha] Sin[alpha]; c2j2 = -(v0n0 Csc[(alpha - theta)/2] Sec[( alpha + theta)/2])/2 Cos[alpha] Sin[alpha]; :[font = text; inactive; preserveAspect] b0, d1, c1 forms a right triangle with the angle b0,d1,c1 == Pi/2-theta. Since we know v0b0 and v0c1, so one side is v0b0-v0c1. We can thus solve for the side c1d1 and also find the coordinate for d1. Another way to find the coordinate of d1 is solve the equation of the cutting plane and the line passing through c1 and d1. That is Solve[ {y == -Tan[Pi/2-theta] x + v0n0/Sin[theta], y == v0c1}, {x,y}] ;[s] 2:0,0;335,1;405,-1; 2:1,12,9,Courier,0,10,0,0,0;1,12,9,Courier,0,10,22721,77,369; :[font = input; preserveAspect] c1d1 = (v0b0-v0c1)/Tan[Pi/2-theta]; d1 = {c1d1,v0c1}; :[font = text; inactive; preserveAspect] By simple principle of linear algebra, we have d2 = (c0 - d1) + c0. :[font = input; preserveAspect; endGroup] d2 = (c0 - d1) + c0; :[font = subsubsection; inactive; Cclosed; preserveAspect; startGroup] Summary of Results :[font = text; inactive; preserveAspect] Every thing we found above is summarized here. :[font = input; preserveAspect; endGroup] Off[General::spell]; Clear[alpha,theta,v0n0] Clear[v0 , v1 , v2 , v0v1 , v0v2 , v1v2 , n0, c0 , c0v1 , c0f1, f1 , f2 , v0f1 , v0f2 , v1f1, b0, v0b0, s1, s2, s1j1, s2j2, v0s1, v0s2, v0j1, v0j2 , v0c1, v0c2 , c1j1 , c2j2, c1d1 , d1, d2] v0 = {0,0}; v1 = {v0n0*Csc[alpha + theta]*Sin[alpha], v0n0*Cos[alpha]*Csc[alpha + theta]}; v2 = {v0n0*Csc[alpha - theta]*Sin[alpha], -(v0n0*Cos[alpha]*Csc[alpha - theta])}; v0v1 = Sqrt[v0n0^2 Csc[alpha + theta]^2]; v0v2 = Sqrt[v0n0^2 Csc[alpha - theta]^2]; v1v2 = Sqrt[v0n0^2 Csc[alpha - theta]^2 Csc[alpha + theta]^2 Sin[2 alpha]^2]; n0 = {Cos@ theta, Sin@ theta} v0n0; c0 = {v0n0*Cos[theta]*Csc[alpha - theta]*Csc[alpha + theta]*Sin[alpha]^2, -(v0n0*Cos[alpha]^2*Csc[alpha - theta]* Csc[alpha + theta]*Sin[theta]) }; c0v1 = Sqrt[v0n0^2*Csc[alpha - theta]^2*Csc[alpha + theta]^2*Sin[2*alpha]^2]/2; c0f1 = (Cos[theta]*Sec[alpha]*(v0n0^2*Csc[alpha - theta]^2* Csc[alpha + theta]^2*Sin[2*alpha]^2)^(1/2))/2; f1 = {(v0n0*Cos[theta]*Csc[(alpha + theta)/2]* Sec[(alpha - theta)/2]*Sin[alpha])/2, (v0n0*(2 + Cos[alpha - theta] - Cos[alpha + theta])* Csc[(alpha + theta)/2]*Sec[(alpha - theta)/2])/4}; f2 = {(v0n0*Cos[theta]*Csc[(alpha - theta)/2]* Sec[(alpha + theta)/2]*Sin[alpha])/2, (v0n0*(-2 + Cos[alpha - theta] - Cos[alpha + theta])* Csc[(alpha - theta)/2]*Sec[(alpha + theta)/2])/4}; v0f1 = ((v0n0^2*Cos[alpha]^4*Csc[(alpha + theta)/2]^2* Sec[(alpha - theta)/2]^2)/4 + (v0n0^2*(2 + Cos[alpha - theta] - Cos[alpha + theta])^2* Csc[(alpha + theta)/2]^2*Sec[(alpha - theta)/2]^2* Sec[theta]^2*Sin[alpha]^2)/16)^(1/2); v0f2 = ((v0n0^2*Cos[alpha]^4*Csc[(alpha + theta)/2]^2* Sec[(alpha - theta)/2]^2)/2 + (v0n0^2*(2 + Cos[alpha - theta] - Cos[alpha + theta])^2* Csc[(alpha + theta)/2]^2*Sec[(alpha - theta)/2]^2* Sec[theta]^2*Sin[alpha]^2)/8)^(1/2); v1f1 = (v0n0^2*Sec[(alpha - theta)/2]^2*Sec[(alpha + theta)/2]^2*Sin[alpha]^2)^(1/2)/2; b0 = {0, v0n0 Csc[theta]}; v0b0 = Abs[v0n0 Csc[theta]]; s1 = {0, (v0n0 Csc[(alpha + theta)/2] Sec[(-alpha + theta)/2])/2}; s2 = {0, -(v0n0 Csc[(alpha - theta)/2] Sec[( alpha + theta)/2])/2}; s1j1 = Abs[(v0n0 Csc[(alpha + theta)/2] Sec[(alpha - theta)/2] Sin[alpha])/2]; s2j2 = Abs[(v0n0 Csc[(alpha - theta)/2] Sec[(alpha + theta)/2] Sin[alpha])/2]; v0s1 = (v0n0 Csc[(alpha + theta)/2] Sec[(-alpha + theta)/2])/2; v0s2 = -(v0n0 Csc[(alpha - theta)/2] Sec[( alpha + theta)/2])/2; v0j1 = (v0n0 Csc[(alpha + theta)/2] Sec[(-alpha + theta)/2])/2 Cos[alpha]; v0j2 = -(v0n0 Csc[(alpha - theta)/2] Sec[( alpha + theta)/2])/2 Cos[alpha]; v0c1 = (v0n0 Csc[(alpha + theta)/2] Sec[(-alpha + theta)/2])/2 Cos[alpha]^2; v0c2 = -(v0n0 Csc[(alpha - theta)/2] Sec[( alpha + theta)/2])/2 Cos[alpha]^2; c1j1 = (v0n0 Csc[(alpha + theta)/2] Sec[(-alpha + theta)/2])/2 Cos[alpha] Sin[alpha]; c2j2 = -(v0n0 Csc[(alpha - theta)/2] Sec[( alpha + theta)/2])/2 Cos[alpha] Sin[alpha]; c1d1 = (v0b0-v0c1)/Tan[Pi/2-theta]; d1 = {c1d1,v0c1}; d2 = (c0 - d1) + c0; On[General::spell] ^*)