Determining if a given point is inside a right circular cylinder

  • #1

Main Question or Discussion Point

Defining the right circular cylinder, I have a vector formed between the centers of each 'cap' and a radius.

I need to determine if a given point (x,y,z) is inside the confines of this cylinder. And and all help is appreciated.
 

Answers and Replies

  • #2
CRGreathouse
Science Advisor
Homework Helper
2,820
0
If it's aligned with the axes, this is easy. Say the circular face is on the x and y axes with the height on the z axis. Check the two-dimensional distance from the center of the cylinder to (x, y). If it's greater than the radius, it's outside; if less, continue. (If equal then continue, but note that if the second test passes it's actually on the border rather than being inside.) For the second, compare the bottom and top z-coordinates of the cylinder to z. If z is between the two it's inside; if equal to one of the two it's on the boundary; if outside the two it's outside.
 
  • #3
If it's aligned with the axes, this is easy. Say the circular face is on the x and y axes with the height on the z axis. Check the two-dimensional distance from the center of the cylinder to (x, y). If it's greater than the radius, it's outside; if less, continue. (If equal then continue, but note that if the second test passes it's actually on the border rather than being inside.) For the second, compare the bottom and top z-coordinates of the cylinder to z. If z is between the two it's inside; if equal to one of the two it's on the boundary; if outside the two it's outside.
It is not defined on the axes :(
 
  • #4
1,707
5
write the equation that defines the cylinder as an equality/inequality, plug in point and see if satisfies it.
 
  • #5
CRGreathouse
Science Advisor
Homework Helper
2,820
0
It is not defined on the axes :(
Then I'd have to know how it's defined to answer that. If you have two systems of axes, you need to convert between them; if you have a parametric equation to define the cylinder, just check if it holds as an inequality.
 
  • #6
695
2
If the points at the centers of the caps are (ax,ay,az) and (bx,by,bz), you can write a parametric equation for the center line as x(t) = ax + t (bx-ax), y(t) = ay + t (by-ay), z(t) = az + t (bz-az), where t=0 or 1 will give you back the cap points.

The distance from a given point (px,py,pz) to any point in the line is given by the function d(t) = sqrt ( (x(t)-px)^2 + (y(t)-py)^2 + (z(t)-pz)^2 ). The closest point on the line (the proyection of your point onto the line) is found by minimizing d, that is, by setting d'(t) = 0 and solving for t. (You could do it by hand, using a math package, or using www.quickmath.com, menus Calculus/Differentiate and Equations/Solve).

Now, with the obtained t_min value, you can: (a) determine if t_min is <0 or >1 (or <=, >= to exclude the border), which would mean the given point was below one cap or above the other; and (b) calculate d(t_min), the distance from the line to your point, that will tell you if the point is farther than the cylinder's radius.

Edit:
Here, I was bored. (C source only.)
 

Attachments

Last edited:

Related Threads on Determining if a given point is inside a right circular cylinder

Replies
24
Views
9K
Replies
2
Views
5K
Replies
6
Views
8K
  • Last Post
Replies
6
Views
3K
  • Last Post
Replies
2
Views
3K
Replies
7
Views
863
Replies
11
Views
1K
Replies
5
Views
655
Replies
4
Views
7K
Replies
2
Views
2K
Top