如何计算立方体中的点是否是WPF 3D中的可见性

时间:2017-03-29 08:48:50

标签: c# wpf xaml 3d graphics3d

我想显示一个透视立方体,所以我应该计算立方体中的点是否为可见性。

与图片类似,红色顶点应该是不可见的,而其他顶点应该是可见的。

任何人都可以给我一个计算它的公式吗?

多维数据集可能已旋转,我无法执行此操作。

我尝试使用HitTest来执行此操作但效果不佳。

我想知道一个公式来计算点,面和线是否可见。

编辑:

关键在于线上的任何一点。

我使用Media3D构建它。

2 个答案:

答案 0 :(得分:1)

如果连接到顶点的任何面具有面向相机的法线(请参见背面剔除),则顶点可见。这应该很快计算。

答案 1 :(得分:1)

尝试拍摄“相机矢量”的点积(通常为(0,0,1)),并且立方体的所有法线矢量都面向所讨论的顶点。
如果任何点积返回负值,则摄像机矢量与相应立方体面的法向矢量之间的角度大于90度,因此“面向”摄像机。
如果兴趣点是顶点,那么您将运行三个点产品。如果关注点位于顶点之间的一条线上,则只计算两个。