(*^ ::[ 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 = "X Window System Mathematica Notebook Front End Version 2.2"; X11StandardFontEncoding; fontset = title, inactive, noPageBreakBelow, noPageBreakInGroup, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, e8, fullFontName, -9, "-*-times-bold-r-normal-*-*-240-75-75-*-*-*-*", 24, fontName, "times"; fontset = subtitle, inactive, noPageBreakBelow, noPageBreakInGroup, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, e6, fullFontName, -9, "-*-times-bold-r-normal-*-*-180-75-75-*-*-*-*", 18, fontName, "times"; fontset = subsubtitle, inactive, noPageBreakBelow, noPageBreakInGroup, nohscroll, preserveAspect, groupLikeTitle, center, M7, italic, e6, fullFontName, -9, "-*-times-medium-i-normal-*-*-140-75-75-*-*-*-*", 14, fontName, "times"; fontset = section, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, grayBox, M22, bold, a20, fullFontName, -9, "-*-times-bold-r-normal-*-*-180-75-75-*-*-*-*", 18, fontName, "times"; fontset = subsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, blackBox, M19, bold, a15, fullFontName, -9, "-*-times-bold-r-normal-*-*-140-75-75-*-*-*-*", 14, fontName, "times"; fontset = subsubsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, whiteBox, M18, bold, a12, fullFontName, -9, "-*-times-bold-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "times"; fontset = text, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, fullFontName, -9, "-*-times-medium-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "times"; fontset = smalltext, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, fullFontName, -9, "-*-times-medium-r-normal-*-*-100-75-75-*-*-*-*", 10, fontName, "times"; fontset = input, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeInput, M42, N23, bold, fullFontName, -9, "-*-courier-bold-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "courier"; fontset = output, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L-5, fullFontName, -9, "-*-courier-medium-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "courier"; fontset = message, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, fullFontName, -9, "-*-courier-medium-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "courier"; fontset = print, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, fullFontName, -9, "-*-courier-medium-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "courier"; fontset = info, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, fullFontName, -9, "-*-courier-medium-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "courier"; fontset = postscript, PostScript, formatAsPostScript, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeGraphics, M7, l34, w282, h287, fullFontName, -9, "-*-courier-medium-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "courier"; fontset = name, inactive, noPageBreakInGroup, nohscroll, preserveAspect, M7, italic, fullFontName, -9, "-*-times-medium-i-normal-*-*-100-75-75-*-*-*-*", 10, fontName, "times"; fontset = header, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, italic, fullFontName, -9, "-*-times-medium-i-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "times"; fontset = leftheader, fullFontName, -9, "-*-times-medium-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "times"; fontset = footer, inactive, nohscroll, noKeepOnOnePage, preserveAspect, center, M7, italic, fullFontName, -9, "-*-times-medium-i-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "times"; fontset = leftfooter, fullFontName, -9, "-*-times-medium-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "times"; fontset = help, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, fullFontName, -9, "-*-times-medium-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "times"; fontset = clipboard, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, fullFontName, -9, "-*-times-medium-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "times"; fontset = completions, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, fullFontName, -9, "-*-courier-medium-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "courier"; fontset = special1, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, fullFontName, -9, "-*-times-medium-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "times"; fontset = special2, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, fullFontName, -9, "-*-times-medium-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "times"; fontset = special3, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, fullFontName, -9, "-*-times-medium-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "times"; fontset = special4, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, fullFontName, -9, "-*-times-medium-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "times"; fontset = special5, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, fullFontName, -9, "-*-times-medium-r-normal-*-*-120-75-75-*-*-*-*", 12, fontName, "times";paletteColors = 128; automaticGrouping; currentKernel; ] :[font = input; preserveAspect; startGroup] A = {{ax},{ay},{az}}; n = {{nx},{ny},{nz}}; X = {{x0},{y0},{z0}}; beta = {{u},{v}}; u0 = {{ux},{uy},{uz}}; t2 = Det[{ Transpose[X ][[1]] , Transpose[n ][[1]] , Transpose[u0][[1]] }]; v0 = Transpose [ {List[ Coefficient[t2,x0] , Coefficient[t2,y0] , Coefficient[t2,z0] ]} ]; replace_uz = Flatten[Solve[ Flatten[Transpose[u0].n] == 0, uz]]; B = A + u u0 + v v0 /. replace_uz :[font = output; output; inactive; preserveAspect; endGroup] The Unformatted text for this cell was not generated. Use options in the Actions Preferences dialog box to control when Unformatted text is generated. ;[o] {{ax + u ux + (-(nz uy) + ny uz) v}, > {ay + u uy + (nz ux - nx uz) v}, > {az + u uz + (-(ny ux) + nx uy) v}} /. replace_uz :[font = input; preserveAspect; startGroup] v0 :[font = output; output; inactive; preserveAspect; endGroup] The Unformatted text for this cell was not generated. Use options in the Actions Preferences dialog box to control when Unformatted text is generated. ;[o] {{-(nz uy) + ny uz}, {nz ux - nx uz}, {-(ny ux) + nx uy}} :[font = input; preserveAspect; startGroup] replaceuz = (Solve[ Flatten[Transpose[u0].n] == 0, uz] ) :[font = output; output; inactive; preserveAspect; endGroup] The Unformatted text for this cell was not generated. Use options in the Actions Preferences dialog box to control when Unformatted text is generated. ;[o] nx ux + ny uy {{uz -> -(-------------)}} nz :[font = input; preserveAspect; startGroup] % :[font = output; output; inactive; preserveAspect; endGroup] The Unformatted text for this cell was not generated. Use options in the Actions Preferences dialog box to control when Unformatted text is generated. ;[o] nx ux + ny uy {uz -> -(-------------)} nz :[font = input; preserveAspect; startGroup] B = Flatten[A + u u0 + v v0 /. replaceuz] :[font = output; output; inactive; preserveAspect; endGroup] The Unformatted text for this cell was not generated. Use options in the Actions Preferences dialog box to control when Unformatted text is generated. ;[o] ny (nx ux + ny uy) {ax + u ux + (-(nz uy) - ------------------) v, nz nx (nx ux + ny uy) > ay + u uy + (nz ux + ------------------) v, nz u (nx ux + ny uy) > az - ----------------- + (-(ny ux) + nx uy) v} nz :[font = input; preserveAspect] x = B[[1]]; y = B[[2]]; z = B[[3]]; :[font = input; preserveAspect] xi = Simplify[- f/z x]; yi = Simplify[-f/z y]; :[font = input; preserveAspect; startGroup] uvFromxy = Solve[ {xj == xi, yj == yi}, {u, v}] :[font = output; output; inactive; preserveAspect; endGroup] The Unformatted text for this cell was not generated. Use options in the Actions Preferences dialog box to control when Unformatted text is generated. ;[o] ax f nz + az nz xj {{u -> -(-----------------------------) + f nz ux - nx ux xj - ny uy xj 2 2 > ((-(f nx ny ux) - f ny uy - f nz uy - ny nz ux xj + > nx nz uy xj) > ((f nz ux - nx ux xj - ny uy xj) > (ay f nz + az nz yj) - > (ax f nz + az nz xj) > (f nz uy - nx ux yj - ny uy yj))) / > ((f nz ux - nx ux xj - ny uy xj) 2 2 > (-((-(f nx ny ux) - f ny uy - f nz uy - > ny nz ux xj + nx nz uy xj) > (f nz uy - nx ux yj - ny uy yj)) + > (f nz ux - nx ux xj - ny uy xj) 2 2 > (f nx ux + f nz ux + f nx ny uy - > ny nz ux yj + nx nz uy yj))), > v -> -(((f nz ux - nx ux xj - ny uy xj) > (ay f nz + az nz yj) - > (ax f nz + az nz xj) > (f nz uy - nx ux yj - ny uy yj)) / 2 2 > (-((-(f nx ny ux) - f ny uy - f nz uy - > ny nz ux xj + nx nz uy xj) > (f nz uy - nx ux yj - ny uy yj)) + > (f nz ux - nx ux xj - ny uy xj) 2 2 > (f nx ux + f nz ux + f nx ny uy - ny nz ux yj + > nx nz uy yj)))}} :[font = input; preserveAspect] :[font = input; preserveAspect; startGroup] Simplify[%] :[font = output; output; inactive; preserveAspect; endGroup] The Unformatted text for this cell was not generated. Use options in the Actions Preferences dialog box to control when Unformatted text is generated. ;[o] 2 2 {{u -> (nz (ax f nx ux + ay f nx ny ux + ax f nz ux + 2 2 > ax f nx ny uy + ay f ny uy + ay f nz uy + 2 2 > az nx ux xj + ay ny nz ux xj + az nz ux xj + > az nx ny uy xj - ay nx nz uy xj + az nx ny ux yj - 2 > ax ny nz ux yj + az ny uy yj + ax nx nz uy yj + 2 > az nz uy yj)) / 2 2 2 2 2 2 > ((nx ux + nz ux + 2 nx ny ux uy + ny uy + 2 2 > nz uy ) (-(f nz) + nx xj + ny yj)), > v -> (nz (ay f nz ux - ax f nz uy - ay nx ux xj - > ay ny uy xj - az nz uy xj + ax nx ux yj + > az nz ux yj + ax ny uy yj)) / 2 2 2 2 2 2 > ((nx ux + nz ux + 2 nx ny ux uy + ny uy + 2 2 > nz uy ) (-(f nz) + nx xj + ny yj))}} :[font = input; preserveAspect] uv = %; :[font = input; preserveAspect; startGroup] ellipse = Simplify[ (u^2/a^2 + v^2/b^2 == 1) /. uv ] :[font = output; output; inactive; preserveAspect; endGroup] The Unformatted text for this cell was not generated. Use options in the Actions Preferences dialog box to control when Unformatted text is generated. ;[o] 2 {(nz Power[ay f nz ux - ax f nz uy - ay nx ux xj - > ay ny uy xj - az nz uy xj + ax nx ux yj + > az nz ux yj + ax ny uy yj, 2]) / 2 2 2 2 2 2 2 > (b (nx ux + nz ux + 2 nx ny ux uy + ny uy + 2 2 2 2 > nz uy ) (-(f nz) + nx xj + ny yj) ) + 2 2 2 > (nz Power[ax f nx ux + ay f nx ny ux + ax f nz ux + 2 2 > ax f nx ny uy + ay f ny uy + ay f nz uy + 2 2 > az nx ux xj + ay ny nz ux xj + az nz ux xj + > az nx ny uy xj - ay nx nz uy xj + az nx ny ux yj - 2 > ax ny nz ux yj + az ny uy yj + ax nx nz uy yj + 2 > az nz uy yj, 2]) / 2 2 2 2 2 2 2 > (a (nx ux + nz ux + 2 nx ny ux uy + ny uy + 2 2 2 2 > nz uy ) (-(f nz) + nx xj + ny yj) ) == 1} ^*)