3D problem solution
- To: mathgroup@smc.vnet.net
- Subject: [mg10731] 3D problem solution
- From: Russell Towle <rustybel@foothill.net>
- Date: Mon, 2 Feb 1998 00:44:24 -0500
Hi all, With regard to the question I posed about finding line intersections in 3-space, I found the IntersectionPoint function below in one of Tom Wickham-Jones' excellent graphics packages (available on MathSource). Tom's function will print "Parallel Lines" if two lines are parallel; if they are skew, it returns two points, forming the shortest line connecting the two skew lines; and if the two lines intersect, it returns the two equal points. cross[ {ax_, ay_, az_}, {bx_, by_, bz_} ] := {ay bz - az by, az bx - ax bz, ax by - ay bx} mag[v_] := Sqrt[Plus@@(v^2)] IntersectionPoint[{a1_, a2_}, {b1_, b2_}] := Block[{v1, v2, c}, v1 = (a2-a1) ; v2 = (b2-b1) ; c = cross[ v1,v2] ; len = Chop[ mag[ c]^2] ; If[ len === 0, Print[ "Parallel Lines"]; Return[ {Infinity, Infinity}]] ; { a1 + (a2 - a1) Det[ {b1-a1, v2, c}]/len, b1 + (b2 - b1) Det[ {b1-a1, v1, c}]/len } ] Russell Towle Giant Gap Press: books on California history, digital topographic maps P.O. Box 141 Dutch Flat, California 95714 ------------------------------ Voice: (916) 389-2872 e-mail: rustybel@foothill.net ------------------------------