Maybe I don't understand the question exactly. Consider the circle x^2+y^2=1, z=0, and the set S of all points at a small distance d, say d near 1/100, from this circle. I think that is a torus, isn't it? You want a symbolic equation (ie, a function of d) for the points in the intersection of this torus with a line?
Just guessing, I would imagine this could depend on d in a complicated way, as when d is small you could have 0, 1, 2, 3, or 4 solutions, but when d is large, it seems to me you could have 0, 1 or 2 solutions. Maybe it's not so simple? On Fri, Sep 26, 2008 at 11:46 PM, Eugene Jhong <[EMAIL PROTECTED]> wrote: > > Newbie to sage - trying to find a point on a line in 3D that is a > specified distance from a circle (the line is not coplanar with the > circle). Here's what I've inputed into sage: > > var("line_dir_x line_dir_y line_dir_z line_p_x line_p_y line_p_z > cent_x cent_y cent_z norm_x norm_y norm_z u radius length") > line_dir = vector([line_dir_x, line_dir_y, line_dir_z]) # direction > of line > line_p = vector([line_p_x, line_p_y, line_p_z]) # point on > the line > cent = vector([cent_x, cent_y, cent_z]) # center > of circle > norm = vector([norm_x, norm_y, norm_z]) # normal to > plane of circle > p = line_p + u * line_dir > diff0 = p - cent > dist = diff0.dot_product(norm) > diff1 = diff0 - dist * norm > sqr_len = diff1.dot_product(diff1) > closest_point1 = cent + (radius/sqrt(sqr_len))*diff1 > diff2 = p - closest_point1 > eq = length**Integer(2) == diff2.dot_product(diff2) > solve([eq], u) > > Here's what eq looks like: > > rleg_len^2 == (-radius*(-norm_z*(norm_z*(line_dir_z*u + line_p_z - > cent_z) + norm_y*(line_dir_y*u + line_p_y - cent_y) + > norm_x*(line_dir_x*u + line_p_x - cent_x)) + line_dir_z*u + line_p_z - > cent_z)/sqrt((-norm_z*(norm_z*(line_dir_z*u + line_p_z - cent_z) + > norm_y*(line_dir_y*u + line_p_y - cent_y) + norm_x*(line_dir_x*u + > line_p_x - cent_x)) + line_dir_z*u + line_p_z - cent_z)^2 + (- > norm_y*(norm_z*(line_dir_z*u + line_p_z - cent_z) + > norm_y*(line_dir_y*u + line_p_y - cent_y) + norm_x*(line_dir_x*u + > line_p_x - cent_x)) + line_dir_y*u + line_p_y - cent_y)^2 + (- > norm_x*(norm_z*(line_dir_z*u + line_p_z - cent_z) + > norm_y*(line_dir_y*u + line_p_y - cent_y) + norm_x*(line_dir_x*u + > line_p_x - cent_x)) + line_dir_x*u + line_p_x - cent_x)^2) + > line_dir_z*u + line_p_z - cent_z)^2 + (-radius*(- > norm_y*(norm_z*(line_dir_z*u + line_p_z - cent_z) + > norm_y*(line_dir_y*u + line_p_y - cent_y) + norm_x*(line_dir_x*u + > line_p_x - cent_x)) + line_dir_y*u + line_p_y - cent_y)/sqrt((- > norm_z*(norm_z*(line_dir_z*u + line_p_z - cent_z) + > norm_y*(line_dir_y*u + line_p_y - cent_y) + norm_x*(line_dir_x*u + > line_p_x - cent_x)) + line_dir_z*u + line_p_z - cent_z)^2 + (- > norm_y*(norm_z*(line_dir_z*u + line_p_z - cent_z) + > norm_y*(line_dir_y*u + line_p_y - cent_y) + norm_x*(line_dir_x*u + > line_p_x - cent_x)) + line_dir_y*u + line_p_y - cent_y)^2 + (- > norm_x*(norm_z*(line_dir_z*u + line_p_z - cent_z) + > norm_y*(line_dir_y*u + line_p_y - cent_y) + norm_x*(line_dir_x*u + > line_p_x - cent_x)) + line_dir_x*u + line_p_x - cent_x)^2) + > line_dir_y*u + line_p_y - cent_y)^2 + (-radius*(- > norm_x*(norm_z*(line_dir_z*u + line_p_z - cent_z) + > norm_y*(line_dir_y*u + line_p_y - cent_y) + norm_x*(line_dir_x*u + > line_p_x - cent_x)) + line_dir_x*u + line_p_x - cent_x)/sqrt((- > norm_z*(norm_z*(line_dir_z*u + line_p_z - cent_z) + > norm_y*(line_dir_y*u + line_p_y - cent_y) + norm_x*(line_dir_x*u + > line_p_x - cent_x)) + line_dir_z*u + line_p_z - cent_z)^2 + (- > norm_y*(norm_z*(line_dir_z*u + line_p_z - cent_z) + > norm_y*(line_dir_y*u + line_p_y - cent_y) + norm_x*(line_dir_x*u + > line_p_x - cent_x)) + line_dir_y*u + line_p_y - cent_y)^2 + (- > norm_x*(norm_z*(line_dir_z*u + line_p_z - cent_z) + > norm_y*(line_dir_y*u + line_p_y - cent_y) + norm_x*(line_dir_x*u + > line_p_x - cent_x)) + line_dir_x*u + line_p_x - cent_x)^2) + > line_dir_x*u + line_p_x - cent_x)^2 > > I try to do the solve but it doesn't seem to terminate after several > hours. Just looking for any pointers about finding an analytical > solution to this seemingly simple problem. > > > > > --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-support URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---