平截头体和球体的相交问题

3
我正在阅读这篇很棒的文章:视锥体剔除,它提到了计算球体和视锥面(平面)之间距离的公式:

C = 球心坐标

N = 平面法线

D = 平面到原点的距离

距离 = DotProduct(C, N) + D

但是我不明白变量 D 是什么意思。特别是,我不明白视锥的原点在哪里。是相机位置吗?
1个回答

4

D 是垂直于平面法线的距离,您需要沿着该法线前进,穿过定义平面所在空间的原点(我预计这通常是世界坐标系中的原点,但如果您的平面是用相机坐标描述的,则使用相机原点。最终,只要您在同一空间中进行计算即可。换句话说,无论您在哪个原点上使用的空间来比较球体和平面),

这是平面方程中的相同值:Ax + By + Cz + d = 0。d 是您将使用的值 D。您可以通过取平面上已知点并使用它来解决平面方程以获得 d 来计算 d。(A、B、C)是平面单位法向量的 X、Y、Z 元素,(x、y、z)是平面上的点的坐标,解决平面方程以获得 d,然后您就有了您的距离。

只需注意在相同的空间中进行所有计算,无论是世界空间还是相机空间或屏幕空间。我猜您会想在世界空间中进行计算。


1
还要注意,“DotProduct(C,N) + D”本质上等同于将平面方程(Ax + By + Cz + d)应用于您的球体中心,结果为0意味着球体中心恰好位于平面上。 - YoungJohn
那么如果它是在世界坐标系中定义的,并且视锥体位于原点,法线通过的原点就是0,0,0? - sgtHale
是的,我相信那将是您想要的起点。 - YoungJohn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接