1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
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