{VERSION 2 3 "IBM INTEL NT" "2.3" } {USTYLETAB {CSTYLE "2D Math" -1 2 "Times" 1 11 0 0 0 0 0 0 2 0 0 0 0 0 0 }{CSTYLE "Hyperlink" -1 17 "" 0 0 0 0 255 1 0 0 1 0 0 0 0 0 0 } {CSTYLE "2D Comment" 2 18 "" 0 0 0 0 128 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "2D Input" 2 19 "" 0 0 128 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "Non-propo rtional" -1 256 "Courier" 1 11 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 257 "" 1 14 0 0 15 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 258 "" 1 14 0 0 65 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 259 "" 1 14 0 0 22 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 260 "" 1 14 186 0 248 0 0 1 0 0 0 0 0 0 0 } {CSTYLE "" -1 261 "" 1 14 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 262 "" 1 14 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 263 "" 1 12 186 0 248 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 264 "" 1 14 186 0 248 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 265 "" 1 12 186 0 248 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 266 "" 1 14 32 105 115 0 0 1 0 0 0 0 0 0 0 }{CSTYLE " " -1 267 "" 1 14 253 0 48 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 268 "" 1 14 109 97 108 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 269 "" 1 14 10 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 270 "" 1 14 32 43 32 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 271 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{CSTYLE "" -1 272 "Courier" 0 11 0 0 0 0 0 2 0 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 0 0 0 0 0 0 }0 1 0 -1 6 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 1" 0 3 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 }1 0 0 0 6 6 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 2" 3 4 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 } 0 0 0 -1 4 4 0 0 0 0 0 0 -1 0 }{PSTYLE "Bullet Item" 0 15 1 {CSTYLE " " -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 3 3 0 0 0 0 0 0 15 2 }{PSTYLE "Address" 0 256 1 {CSTYLE "" -1 -1 "" 1 11 0 0 0 0 1 0 0 0 0 0 0 0 0 }3 1 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Date" 256 257 1 {CSTYLE "" -1 -1 "" 1 12 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 6 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 0" -1 258 1 {CSTYLE "" -1 -1 "Courier" 0 10 128 0 0 1 2 2 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "R3 Font 2" -1 259 1 {CSTYLE "" -1 -1 "Courier" 0 10 0 0 0 1 2 2 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {SECT 0 {PARA 3 "" 0 "" {HYPERLNK 17 "AESOP" 2 "AESOP" "" } {TEXT -1 25 " routine beam_intersect()" }}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 6 "Syntax" }}{PARA 0 "" 0 "" {TEXT 272 201 "beam_intersect( i nputbeam, surface, coordframe, \n small_parms1, order1, small_params2, order2, \n varlist, nodenom_list, subli st, siderels, \n siderels_list )" }{TEXT -1 1 " " }}} {SECT 1 {PARA 4 "" 0 "" {TEXT -1 7 "Purpose" }}{PARA 0 "" 0 "" {TEXT 271 16 "beam_intersect()" }{TEXT -1 192 " finds the intersection point of a beam and a quadratic surface up to and including order 'order' i n the small parameters list 'params'. If order < 0, then no series ex pansions are performed." }}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 9 "Argume nts" }}{PARA 15 "" 0 "" {TEXT -1 13 "The argument " }{TEXT 257 10 "inp utbeam " }{TEXT -1 228 "must be a table of data type 'beam':\n be am[pos] anchor position of beam (type 'point')\n beam[dir] \+ direction of propogation (type 'vector')\n beam[path] accum ulated optical path\n beam[type] = 'beam'" }}{PARA 15 "" 0 "" {TEXT -1 13 "The argument " }{TEXT 258 8 "surface " }{TEXT -1 164 "mus t be indexed as follows:\n surface[eqn] := f(xname,yname,zname );\n surface[coord] := [xname,yname,zname];\n surface[pos]\n surface[dir]\nwhere " }{XPPEDIT 18 0 "f(x,y,z)" "-%\"fG6%%\"xG% \"yG%\"zG" }{TEXT -1 40 " is the equation for the surface,\n " } {XPPEDIT 18 0 "f(x,y,z) = 0" "/-%\"fG6%%\"xG%\"yG%\"zG\"\"!" }{TEXT -1 330 "\nin the local coordinates, and xname, yname, and zname are th e labels used for the x, y, and z coordinates in the equation describi ng the surface. surface[pos] is the position of the surface vertex in the global coordinate system, and surface[dir] is the direction of th e surface axis of symmetry in the global coordinate system." }}{PARA 15 "" 0 "" {TEXT -1 13 "The argument " }{TEXT 259 11 "coordframe " } {TEXT -1 376 "signals whether the coordinate frame in which the input \+ beam is expressed is the surface LOCAL frame or the GLOBAL reference f rame. If coordframe=LOCAL, no frame conversion is done. If coordfram e=GLOBAL, the input beam is transformed to the surface LOCAL frame, th e intersection is found, then the intersection point is transformed to the GLOBAL frame before being returned." }}{PARA 15 "" 0 "" {TEXT 260 12 "small_parms1" }{TEXT 263 5 " and " }{TEXT 264 12 "small_parms2 " }{TEXT 265 4 " are" }{TEXT -1 244 " Maple lists of small parameters \+ to expand the expressions in at the intersection point. The lists wil l be treated as independent. Expansions will first be performed on th e variables in small_params1, then on the variables in small_params2. \+ " }{TEXT 266 6 "order1" }{TEXT -1 5 " and " }{TEXT 267 6 "order2" } {TEXT -1 262 " are the corresponding desired expansion orders. This a llows independent expansions to different orders for different variabl es. For example, one may want to expand in radius to 12th order at th e same time as expanding to 4th order in a perturbation parameter." }} {PARA 15 "" 0 "" {TEXT 261 8 "varlist " }{TEXT -1 137 "is a list of \" important\" variables by which the expressions may be organized and th en recursively subexpression-simplified via collect()." }}{PARA 15 "" 0 "" {TEXT 262 12 "nodenom_list" }{TEXT -1 113 " is a list of variable s which are not allowed in an expression denominator when finding beam intersection points." }}{PARA 15 "" 0 "" {TEXT 268 7 "sublist" } {TEXT -1 1 " " }}{PARA 15 "" 0 "" {TEXT 269 8 "siderels" }}{PARA 15 " " 0 "" {TEXT 270 13 "siderels_list" }{TEXT -1 1 " " }}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 12 "Return Value" }}{PARA 15 "" 0 "" {TEXT -1 298 " intersct() returns a table containing the first solution for the inter section of the beam with the surface, along with the distance from the beam anchor to the intersection point, indexed as follows:\n retu rn_value[pos] an AESOP 'point'\n return_value[path] the optical path length" }}{PARA 15 "" 0 "" {TEXT -1 146 "Coordinates are wrt the surface local reference frame if intersct() is called with co ordframe=LOCAL, or wrt the global frame if coordframe=GLOBAL." }}} {SECT 1 {PARA 4 "" 0 "" {TEXT -1 23 "Additional Requirements" }}{PARA 15 "" 0 "" {TEXT -1 103 "The global variables\n GLOBAL := 1;\n \+ LOCAL := 0;\nmust be defined before calling this procedure." }} {PARA 15 "" 0 "" {TEXT -1 86 "The floating point variable time0 must b e initialized before calling this procedure: " }{TEXT 19 14 "time0:=t ime();" }}{PARA 15 "" 0 "" {TEXT -1 93 "The files startup.p and opsys. p must have been read by Maple before this routine can be used." }}} {SECT 1 {PARA 4 "" 0 "" {TEXT -1 6 "Method" }}{PARA 0 "" 0 "" {TEXT -1 148 "The input beam must be in the local coordinate frame of the su rface. The parameterized equation for a line coincident with the inpu t beam is\n " }{XPPEDIT 18 0 "r(t)=r[0] + t*n" "/-%\"rG6#%\"tG,&& F$6#\"\"!\"\"\"*&F&F+%\"nGF+F+" }{TEXT -1 7 "\nwhere " }{XPPEDIT 18 0 "r[0]=[x[0],y[0],z[0]]" "/&%\"rG6#\"\"!7%&%\"xG6#F&&%\"yG6#F&&%\"zG6#F &" }{TEXT -1 129 " is a point on the line (the beam anchor point), t i s the parameterization of the position on the line (ie, the path lengt h from " }{XPPEDIT 18 0 "r[0]" "&%\"rG6#\"\"!" }{TEXT -1 44 "), and n \+ is the unit direction vector\n " }{XPPEDIT 18 0 "n=[ sin psi * co s lambda, sin psi * sin lambda, cos psi ]" "/%\"nG7%**%$sinG\"\"\"%$ps iGF'%$cosGF'%'lambdaGF'**F&F'F(F'F&F'F*F'*&F)F'F(F'" }{TEXT -1 3 " = \+ " }{XPPEDIT 18 0 "[ n[x], n[y], n[z] ]" "7%&%\"nG6#%\"xG&F$6#%\"yG&F$6 #%\"zG" }{TEXT -1 8 "\nwhere (" }{XPPEDIT 18 0 "psi,lambda" "6$%$psiG% 'lambdaG" }{TEXT -1 192 ") are the polar and azimuthal angls wrt the + z axis and counterclockwise from the +x axis in the local coordinate f rame.\n\nThe equation of the surface (in the local frame) is of the fo rm\n " }{XPPEDIT 18 0 "f(x,y,z) = 0" "/-%\"fG6%%\"xG%\"yG%\"zG\" \"!" }{TEXT -1 94 "\nWe can find the value of t which corresponds to t he intersection point by substituting\n " }{XPPEDIT 18 0 "x = x[0 ] + t*sin psi * cos lambda" "/%\"xG,&&F#6#\"\"!\"\"\"*,%\"tGF(%$sinGF( %$psiGF(%$cosGF(%'lambdaGF(F(" }{TEXT -1 3 " = " }{XPPEDIT 18 0 "x[0] \+ + t*n[x]" ",&&%\"xG6#\"\"!\"\"\"*&%\"tGF'&%\"nG6#F$F'F'" }{TEXT -1 7 " \n " }{XPPEDIT 18 0 "y = y[0] + t*sin psi * sin lambda" "/%\"yG,& &F#6#\"\"!\"\"\"*,%\"tGF(%$sinGF(%$psiGF(F+F(%'lambdaGF(F(" }{TEXT -1 5 " = " }{XPPEDIT 18 0 "y[0] + t*n[y]" ",&&%\"yG6#\"\"!\"\"\"*&%\"tG F'&%\"nG6#F$F'F'" }{TEXT -1 7 "\n " }{XPPEDIT 18 0 "z = z[0] + t* sin psi * sin lambda" "/%\"zG,&&F#6#\"\"!\"\"\"*,%\"tGF(%$sinGF(%$psiG F(F+F(%'lambdaGF(F(" }{TEXT -1 6 " = " }{XPPEDIT 18 0 "z[0] + t*n[z ]" ",&&%\"zG6#\"\"!\"\"\"*&%\"tGF'&%\"nG6#F$F'F'" }{TEXT -1 6 "\ninto \+ " }{XPPEDIT 18 0 "f(x,y,z)" "-%\"fG6%%\"xG%\"yG%\"zG" }{TEXT -1 171 " \+ and solving for t. For a quadratic surface there will in general be t wo solutions. Then we substitute the solution(s) for t back into the \+ equations for the line,\n " }{XPPEDIT 18 0 "r(t) = r[0] + t*n" "/ -%\"rG6#%\"tG,&&F$6#\"\"!\"\"\"*&F&F+%\"nGF+F+" }{TEXT -1 126 "\nto de termine the x, y, and z values of the intersection point.\n\nAll calul ations and results are in the local reference frame." }}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 18 "Contact the Author" }}{PARA 15 "" 0 "" {TEXT -1 123 "Dr. Marc A. Murison\nAstronomical Applications Dept.\nU. S. Naval Observatory\n3450 Massachusetts Ave., NW\nWashignton, DC 2039 2" }}{PARA 15 "" 0 "" {TEXT 256 29 "murison@riemann.usno.navy.mil" }} {PARA 15 "" 0 "" {TEXT 256 35 "http://riemann.usno.navy.mil/AESOP/" }} }{SECT 0 {PARA 4 "" 0 "" {TEXT -1 8 "See Also" }}{PARA 0 "" 0 "" {HYPERLNK 17 "AESOP" 2 "AESOP" "" }{TEXT -1 2 ", " }{HYPERLNK 17 "plan e" 2 "AESOP,quadric" "" }{TEXT -1 2 ", " }{HYPERLNK 17 "quadric" 2 "AE SOP,quadric" "" }{TEXT -1 2 ", " }{HYPERLNK 17 "reflect" 2 "AESOP,refl ect" "" }{TEXT -1 2 ", " }{HYPERLNK 17 "surfnorm" 2 "AESOP,surface_nor mal" "" }{TEXT -1 2 ", " }{HYPERLNK 17 "Zernike" 2 "AESOP,Zernike" "" }}}}}{MARK "0 1 1 0" 27 }{VIEWOPTS 1 1 0 1 1 1803 }