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
------------------------------