Intersection between line and cylinder

Click For Summary

Discussion Overview

The discussion revolves around the mathematical expressions for the intersection of a line with a sphere and a cylinder. Participants are exploring the derivation of these equations and their implementation in Matlab code, focusing on the logic and correctness of the mathematical formulations.

Discussion Character

  • Technical explanation
  • Mathematical reasoning
  • Debate/contested

Main Points Raised

  • One participant presents equations for line-sphere intersection derived from substituting line equations into the sphere equation.
  • Another participant questions the clarity and correctness of the initial equations, asking for definitions of variables a, b, and c, and the derivation process.
  • There is a mention of the possible intersection scenarios between a line and a sphere, including no intersection, one point, or two points of intersection.
  • For the cylinder, a participant attempts to derive similar equations but expresses uncertainty about their correctness.
  • Clarifications are provided regarding the definitions of variables and the nature of the equations used for the line.
  • One participant suggests that the equations for the cylinder may need to be adjusted, particularly regarding the squaring of the radius R.
  • Another participant requests more detailed information about the line equations used in the derivation process.

Areas of Agreement / Disagreement

Participants express differing views on the correctness of the mathematical expressions for the cylinder intersection, and there is no consensus on the validity of the derived equations. The discussion remains unresolved regarding the specific formulation for the cylinder.

Contextual Notes

Some participants note potential missing assumptions and the need for clearer definitions of variables in the equations. There are unresolved mathematical steps in the transition from sphere to cylinder intersection equations.

Joacim Jacobsen
Messages
3
Reaction score
0
I have an expression for a "line- to sphere intersection" that works:
a = 1 + Ax^2 + Ay^2
b = 2*(-zs + Ax*(Bx-xs) + Ay*(By-ys))
c = zs^2 + (Bx-xs)^2 + (By - ys)^2 - R^2

This is part of a code in Matlab, and works fine. It is derived from substituting (x=Ax*z+Bx, y=Ay*z+By) into:
((x-xs)^2+(y-ys)^2+(z-zs)^2 = R

I am now trying to do the same for a cylinder, by substituting(x=Ax*z+Bx, y=Ay*z+By) into: (x-xs)^2+(y-ys)^2 = R
Ending up with:
a = Ax^2+Ay^2;
b = 2*Ax*Bx - 2*Ax*xs + 2*Ay*By - 2*Ay*ys;
c = -2*Bx*xs - 2*By*ys + Bx^2 + By^2 + xs^2+ys^2 - R^2;

This doesn't seem to work. Can anyone tell me if something seems off with the math or logic?
Any comments at all would be greatly appreciated.
 
Last edited:
Physics news on Phys.org
Joacim Jacobsen said:
I have an expression for a "line- to sphere intersection" that works:
a = 1 + Ax^2 + Ay^2
b = 2*(-zs + Ax*(Bx-xs) + Ay*(By-ys))
c = zs^2 + (Bx-xs)^2 + (By - ys)^2 - R^2
Without any supplemental explanation, this doesn't make much sense. A line and a sphere in space can intersect in one of three ways:
1. No intersection
2. Exactly one point of intersection (the line is tangent to the sphere)
3. Two points of intersection

In your equations above, what are a, b, and c?
How did you get these equations?
Joacim Jacobsen said:
This is part of a code in Matlab, and works fine. It is derived from substituting (x=Ax*z+Bx, y=Ay*z+By) into:
((x-xs)^2+(y-ys)^2+(z-zs)^2 = R
Again, with no explanation, this doesn't make much sense.

By the way, the equation of a sphere of radius R, with center at the point ##(x_0, y_0, z_0)## is ##(x - x_0)^2 + (y - y_0)^2 + (x - z_0)^2 = R^2##. In your equation above it looks like you are using just R.
Joacim Jacobsen said:
I am now trying to do the same for a cylinder, by substituting(x=Ax*z+Bx, y=Ay*z+By) into: (x-xs)^2+(y-ys)^2 = R
Ending up with:
a = Ax^2+Ay^2;
b = 2*Ax*Bx - 2*Ax*xs + 2*Ay*By - 2*Ay*ys;
c = -2*Bx*xs - 2*By*ys + Bx^2 + By^2 + xs^2+ys^2 - R^2;

This doesn't seem to work. Can anyone tell me if something seems off with the math or logic?
Any comments at all would be greatly appreciated.
A line and a cylinder in space can intersect in one of four ways:
1. No intersection
2. Exactly one point of intersection (the line is tangent to the cylinder)
3. Two points of intersection
4. An infinite number of points of intersection (the line is parallel to the cylinder's axis and lies on the cylinder)
 
Ok, thank you for your reply!

For the first two questions: I got a,b and c from putting the equation for a line into the equation for a sphere. I ended up with a quadratic equation when I solved for "Az". a,b and c are simply; zs(a)^2, zs(b), c. That is, the inputs for the quadratic formula (NOT the solutions, because its part of a code that changes the variables over and over(if that makes sense)).

For the 3rd question; "It is derived from substituting...", my "xs, ys, and zs" are equal to your "x0, y0, z0." What I did here was basically to put the line equations into sphere equation.

Comment to your 4th point:
The R I think I have simply forgot to square in the first lines. ( I changed it later so it shouldn't matter)
I am tracing a ray. This is the next step of the code:

z1 = (-b + sqrt(b^2 - 4*a*c))/(2*a); x1 = Ax*z1+Bx; y1 = Ay*z1+By;
z2 = (-b - sqrt(b^2 - 4*a*c))/(2*a); x2 = Ax*z2+Bx; y2 = Ay*z2+By;

So basically, I just need a set of expressions that does the job for a cylinder instead of a sphere. At least, this is what I'm thinking. I am not sure if this will work.
 
Joacim Jacobsen said:
For the first two questions: I got a,b and c from putting the equation for a line into the equation for a sphere. I ended up with a quadratic equation when I solved for "Az". a,b and c are simply; zs(a)^2, zs(b), c. That is, the inputs for the quadratic formula (NOT the solutions, because its part of a code that changes the variables over and over(if that makes sense)).

For the 3rd question; "It is derived from substituting...", my "xs, ys, and zs" are equal to your "x0, y0, z0." What I did here was basically to put the line equations into sphere equation.
It would be helpful to see the equations you used for the line (parametric equations? symmetric equations?, vector equation?) as well as at least some of your work, rather than just a description of what you did.
 
This is the equations I used for the line:
x=Ax*z+Bx, y=Ay*z+By (I solved for z)

This is basically the .m-file that make up the intersection(sphere):

function [r1v,a2v] = lens_vec(s1,r1,a1v,r0v,v1,v2,direk,mirror_skew)

%Find intersection and refraction:

% s1 - sphere center (z-value)
% r1 - sphere radius
% a1v - unit vector defining direction of ray
% r0v - starting point of ray
% v1 - speed of sound, material 1
% v2 - speed of sound, material 2
% direk - choose croosing, direk==0 to the right of s1, direk==1, to the

% left of s1
xs = 0.0000; ys=mirror_skew; zs=s1; % center of sphere

R = r1; % radius of sphere

%...Define parameters for x and y coordinate of straight line (Ax,Bx),
%...(Ay, By)

if a1v(1) ~= 0

Ax = a1v(1)/a1v(3);

else

Ax = 0;

end

if a1v(2) ~= 0

Ay = a1v(2)/a1v(3);

else

Ay = 0;

endBx = r0v(1)- Ax*r0v(3);

By = r0v(2)- Ay*r0v(3);

% Intersection straight line and sphere:

a = 1 + Ax^2 + Ay^2;
b = 2*(-zs + Ax*(Bx-xs) + Ay*(By-ys));
c = zs^2 + (Bx-xs)^2 + (By - ys)^2 - R^2;

z1 = (-b + sqrt(b^2 - 4*a*c))/(2*a); x1 = Ax*z1+Bx; y1 = Ay*z1+By;
z2 = (-b - sqrt(b^2 - 4*a*c))/(2*a); x2 = Ax*z2+Bx; y2 = Ay*z2+By;

% (After this comes a section on Snell's law and refraction code)
 

Similar threads

  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 11 ·
Replies
11
Views
2K
Replies
5
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 2 ·
Replies
2
Views
7K
  • · Replies 11 ·
Replies
11
Views
2K
  • · Replies 2 ·
Replies
2
Views
4K
  • · Replies 16 ·
Replies
16
Views
5K