INTERSECTLINECYLINDER Compute intersection points between a line and a cylinder.
POINTS = intersectLineCylinder(LINE, CYLINDER)
Returns intersection points between a line and a cylinder.
Input parameters:
LINE = [x0 y0 z0 dx dy dz]
CYLINDER = [x1 y1 z1 x2 y2 z2 R]
Output:
POINTS = [x1 y1 z1 ; x2 y2 z2]
POINTS = intersectLineCylinder(LINE, CYLINDER, 'checkBounds', B)
Where B is a boolean (TRUE by default), check if the points are within
the bounds defined by the two extreme points. If B is false, the
cylinder is considered to be infinite.
Example
% Compute intersection between simple vertical cylinder and line
line = [60 60 60 1 2 3];
cylinder = [20 50 50 80 50 50 30];
points = intersectLineCylinder(line, cylinder);
% Display the different shapes
figure;
drawCylinder(cylinder);
hold on; light;
axis([0 100 0 100 0 100]);
drawLine3d(line);
drawPoint3d(points, 'ko');
% Compute intersections when one of the points is outside the
% cylinder
line = [80 60 60 1 2 3];
cylinder = [20 50 50 80 50 50 30];
intersectLineCylinder(line, cylinder)
ans =
67.8690 35.7380 23.6069
See also
lines3d, intersectLinePlane, drawCylinder, cylinderSurfaceArea
References
See the link:
http://www.gamedev.net/community/forums/topic.asp?topic_id=467789
Package: matgeom