Wpf 如何确定显示三维平面的哪一侧?
这是一个3d n00b问题 我正在开发一个WPF控件,它实现了Silverlight透视变换功能的基础,允许2D平面在三个轴中的任意一个轴上旋转。它工作得很好。然而,我对确定飞机后部是否显示所需的数学有点困惑。我现在明白这一点的天真代码是:Wpf 如何确定显示三维平面的哪一侧?,wpf,3d,quaternions,Wpf,3d,Quaternions,这是一个3d n00b问题 我正在开发一个WPF控件,它实现了Silverlight透视变换功能的基础,允许2D平面在三个轴中的任意一个轴上旋转。它工作得很好。然而,我对确定飞机后部是否显示所需的数学有点困惑。我现在明白这一点的天真代码是: bool isBackShowing = Math.Abs(RotationX) > 90 && Math.Abs(RotationY) < 90; if (!isBackShowing) { isBackShowing
bool isBackShowing = Math.Abs(RotationX) > 90 && Math.Abs(RotationY) < 90;
if (!isBackShowing)
{
isBackShowing = Math.Abs(RotationX) < 90 && Math.Abs(RotationY) > 90;
}
bool-isBackShowing=Math.Abs(RotationX)>90&&Math.Abs(RotationY)<90;
如果(!isBackShowing)
{
isBackShowing=数学Abs(旋转X)<90和数学Abs(旋转Y)>90;
}
但是,当任一轴上的旋转介于+-270和+-360之间时,此操作失败
基本变换是使用一个四元数对象来进行实际旋转,它具有很好的轴和角度属性,因此我猜如果我知道如何进行,我可以使用它。你需要做平面法线和视图方向的点积 如果它是正的,那么飞机就背对着你 如果是负数,那么飞机就朝向你 如果它为零,则您正在查看上的平面边 要找到平面法线,取平面上的任意三个点,我们称它们为OA和B。取O到A和O到B的向量。如果你取这两个向量的叉积,你就会得到法线。由于计算的顺序很重要,所以要小心。一本关于三维几何的好书/网站将提供无价的帮助
您需要做平面法线和视图方向的点积 如果它是正的,那么飞机就背对着你 如果是负数,那么飞机就朝向你 如果它为零,则您正在查看上的平面边 要找到平面法线,取平面上的任意三个点,我们称它们为OA和B。取O到A和O到B的向量。如果你取这两个向量的叉积,你就会得到法线。由于计算的顺序很重要,所以要小心。一本关于三维几何的好书/网站将提供无价的帮助
只是不想再谈这个问题,很抱歉耽搁了。愚蠢的问题,但我怎么才能发现飞机正常?我有视线方向。只是不想回到这里,抱歉耽搁了。愚蠢的问题,但我怎么才能发现飞机正常?我确实知道方向。