Tip of the hemisphere - (x,y2,z)
Mid point of the circle in the hemisphere - (x,y,z)
由于x,y,z和y2可以在3D空间中的任何位置,因此半球可以指向任何方向,因此我正在与方向部分进行斗争。我无法解决这个问题,类似于锥形,球形或截锥形。
答案 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