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

时间:2014-07-04 10:09:06

标签: algorithm math 3d vector-graphics

Tip of the hemisphere - (x,y2,z)
Mid point of the circle in the hemisphere - (x,y,z)

由于x,y,z和y2可以在3D空间中的任何位置,因此半球可以指向任何方向,因此我正在与方向部分进行斗争。我无法解决这个问题,类似于锥形,球形或截锥形。

1 个答案:

答案 0 :(得分:3)

让我们称呼你的观点(a,b,c)。请注意,半球是半空间和球体的交点。所以我们只测试两者的交叉和AND结果。首先测试该点是否位于半空间的右侧:

dy = y2-y;

if (b-y)*dy<0 then
  return no intersection

这使用了这样一个事实,即只有当测试点位于错误的半空间时,尖端到中心的距离将具有与点到中心的距离不同的符号。

然后检查球体。这是从尖端到中心的距离推断的:

squareDistance = (x-a)²+(y-b)²+(z-c)²;
if squareDistance > dy² then
  return no intersection
else
  return intersection