"Bill Whiten" <W.Whiten@uq.edu.au> wrote in message <email@example.com>... > "Doctor61" wrote in message <firstname.lastname@example.org>... > > I have two 3d circles (centre coordiantes and radii) with their normals passing through origin. If you consider the origin to be the vertex of a right cone having the circle as the base, how can I determine if there is an intersection between these cones? > > if centre is x1,y1,z1 and radius r set d^2=x1^2+y1^2+z1^2 > Cone is intersection of spheres a^2 (d^2+r^2)=x^2+y^2+z^2 and > a^2 r^2 = (a x1-x)^2+(a y1-y)^2+(a z1-z)^2 > > Eliminate a to get equation of cone: > x^2+y^2+z^2 = (r^2+d^2) (x1 x+y1 y+z1 z)^2/d^4 > (check this) > > Set x^2+y^2+z^2=1 and solve for points on two cones and this sphere. > E.g. Solve linear equations (1= (r^2+d^2) (x1 x+y1 y+z1 z)^2/d^4 etc) > for x and y then substitute into x^2+y^2+z^2=1 to get quadratic for z. > > Regards
I have actually thought about something like what you described, but I don't know how to implement it in matlab. I thought I can find the two circles at the same distance from origin and see if they have intersections. But I don't know how to do that. Based on what I have found so far, if t is the parameter then any point P on the circle is given by: P=Rcos(t)u? +Rsin(t)n? ×u? +c Where u is a unit vector from the centre of the circle to any point on the circumference; R is the radius; n is a unit vector perpendicular to the plane and c is the centre of the circle.
So if I have u1,n1,c1 and u2,n2 and c2, then how can I find the intersection?