Question: How is possible to detect if a 3D point is inside a cone or not? 

```
Ross cone = (x1, y1, h1)
Cone angle = alpha
Height of the cone = H
Cone radius = R
Coordinates of the point of the cone = P1 (x2, y2, h2)
Coordinates outside the cone = P2( x3, y3, h3)

Result for point1 = true
Result for point2 = false

```

Answer: 
To expand on Ignacio's answer:

Let

```
x = the tip of the cone
dir = the normalized axis vector, pointing from the tip to the base
h = height
r = base radius

p = point to test

```

So you project `p` onto `dir` to find the point's distance along the axis:

```
cone_dist = dot(p - x, dir)

```

At this point, you can reject values outside `0 <= cone_dist <= h`.

Then you calculate the cone radius at that point along the axis:

```
cone_radius = (cone_dist / h) * r

```

And finally calculate the point's orthogonal distance from the axis to compare against the cone radius:

```
orth_distance = length((p - x) - cone_dist * dir)

is_point_inside_cone = (orth_distance < cone_radius)

```
A cone is simply an infinite number of circles whose size is defined by a linear equation that takes the distance from the point. Simply check if it's inside the circle of the appropriate size.