Re: Intersection of two surfaces in 3D

*To*: mathgroup at smc.vnet.net*Subject*: [mg52868] Re: [mg52822] Intersection of two surfaces in 3D*From*: Daniel Lichtblau <danl at wolfram.com>*Date*: Wed, 15 Dec 2004 04:26:39 -0500 (EST)*References*: <200412141059.FAA24571@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

Narasimham wrote: > There are threads currently on sci.math on this topic. How do we find > space intersection curve of two parameterized surfaces? One needs to > solve for two unknown functions f1(t1,t2)=0 and f2(s1,s2)=0 to print > out/output coordinates of intersection. I do believe it is within the > capability of Mathematica, at least when surfaces are algebraically > generatable. An example/approach considered is: > > Clear[x,y,z,t1,t2,s1,s2]; > x1=4*t2* Cos[t1]; y1=4Sin[t1]; z1=3t2; > x2=s2 Sin[s1];y2=s2 Cos[s1];z2=(s2^2/4); > pp1=ParametricPlot3D[{x1,y1,z1},{t1,0,2 Pi},{t2,0,1}]; > pp2=ParametricPlot3D[{x2,y2,z2},{s1,0,2 Pi},{s2,0,4}]; > Show[pp1,pp2]; > S1={x-x1,y-y1,z-z1}; S2={x-x2,y-y2,z-z2}; > NSolve[Join[S1,S2],{x,y,z},{t1,t2,s1,s2}]; > I'm not sure exactly what you want but I'll show a couple of computations that might be of use in the algebraic case (that is, when everything can be cast in the form of rational functions in some set of variables). We start with the system below. I took the liberty of algebraicizing the trigs and also of appending 1's for the parameters of the first surface and 2's for parameters for the second surface. This has the perhaps unfortunate effect of changing the locations of some of your parameters. polys = {x-4*s1*ct1, y-4*st1, z-3*s1, x-s2*st2, y-s2*ct2,z-s2^2/4, ct1^2+st1^1-1, ct2^2+st2^1-1}; To find a "nice" implicit form of the intersection we compute a Gorebner basis in the space variables {x,y,z}, eliminating all parameters. InputForm[gbvars = GroebnerBasis[polys, {x,y,z}, {s1,s2,ct1,st1,ct2,st2}]] Out[10]//InputForm= {9*y^4 - 72*y^2*z + 144*z^2 - 64*z^3 + 16*y*z^3, 9*x^2 - 16*z^2 + 4*y*z^2} If instead you would like parameters for the intersection curve you can eliminate the space variables and the parameters for one surface. InputForm[gbparams = GroebnerBasis[polys, {s1,ct1,st1}, {s2,ct2,st2,x,y,z}]] Out[12]//InputForm= {-1 + ct1^2 + st1, 9*s1^2 - 12*s1^3 + 12*s1^3*st1 - 24*s1*st1^2 + 16*st1^4} There are other techniques that apply to nonalgebraic parametrizations (and to algebraic). For example one might attempt to track the intersection curve via an ODE (or better still, DAE) system. It's a bit of work to do by hand. You might want to look at a MathSource package by Steve Wilkinson: http://library.wolfram.com/infocenter/Articles/3260/ Daniel Lichtblau Wolfram Research

**References**:**Intersection of two surfaces in 3D***From:*"Narasimham" <mathma18@hotmail.com>