如何确定3D空间中的点是否位于截锥内?

时间:2014-07-04 09:40:24

标签: algorithm math 3d vector-graphics

How can I detect if a point is inside a cone or not, in 3D space?无济于事,因为截锥可以是圆柱体。

我尝试了另一种涉及太多计算的方法,而且非常庞大。

我正在寻找更简单的方法来查找截锥内是否存在点。

Mid point of bottom of the truncated cone -> x,y,z
Mid point of top of the truncated cone -> x, y2, z
BottomRadius = r1
TopRadius = r2

2 个答案:

答案 0 :(得分:2)

似乎测试两个条件就足够了,这两个条件都必须为真:

  • 该点必须位于锥形底座上方,锥形顶部下方。一维测试。使用锥底的距离进行下一步,仅当发现此步骤的结果为真时才执行。
  • 该点必须在圆锥形切片的圆周内,由距离基部的距离确定。同样是一个相对简单的,也是一维的测试(点与锥轴的距离与切片半径的比较)

看起来很简单,或者我错过了什么?

答案 1 :(得分:1)

对于草率的配方很抱歉,但我会按照以下步骤进行操作:

  1. 计算两个圆锥圆的中心点c_1,c_2。
  2. 计算通过c_1和c_2
  3. 的直线
  4. 计算点p到此线的距离,在此期间,计算最接近p的线上的点q(参见Wikipedia article
  5. 如果q不在c_1和c_2之间,则p位于
  6. 之外
  7. 如果q在c_1和c_2之间,则距离dist(p,q)必须小于点q处的圆锥半径。也许半径可以这样计算:r(q):= dist(q,c_1)/ dist(c_1,c_2)* r_1 + dist(q,c_2)/ dist(c_1,c_2)* r_2,其中r_1为圆形半径为c_1,r_2为另一个圆的半径。
  8. 所以如果dist(p,q)> r(q),重点在于
  9. 因此必须测试两个条件