Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Determining if a given point is inside a right circular cylinder

  1. Nov 23, 2007 #1
    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.
  2. jcsd
  3. Nov 23, 2007 #2


    User Avatar
    Science Advisor
    Homework Helper

    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.
  4. Nov 23, 2007 #3
    It is not defined on the axes :(
  5. Nov 23, 2007 #4
    write the equation that defines the cylinder as an equality/inequality, plug in point and see if satisfies it.
  6. Nov 23, 2007 #5


    User Avatar
    Science Advisor
    Homework Helper

    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.
  7. Nov 24, 2007 #6
    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.

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

    Attached Files:

    Last edited: Nov 24, 2007
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook