【问题标题】:What does the AxisAngleRotation3D.Axis property really mean?AxisAngleRotation3D.Axis 属性的真正含义是什么?
【发布时间】:2021-02-28 11:41:45
【问题描述】:

这可能是一个愚蠢的问题,但我是 WPF 3D 技术的新手。

目前我正在使用 SharpDX(C# 的 DirectX 包装器)处理我的项目。我正在实现 3D 渲染引擎并尝试实现与 WPF 中相同的界面。所以我从 XAML 文件中获取所有网格、相机位置等。现在我正在尝试设置模型旋转的中心点。在 SharpDX 中,此属性是通过使用 Vector3 对象 (x,y,z) 设置的。在 WPF 中没有这样的属性,但我找到了 Axis 属性。我可以将此属性解释为旋转中心吗?

【问题讨论】:

    标签: c# wpf 3d


    【解决方案1】:

    请参阅 RotateTransform3D 类的 MSDN 文档。对于变换对象本身,您可以指定一个旋转中心和一个描述旋转机制的单独旋转对象。

    对于旋转对象,当您希望指定旋转角度和旋转轴(即矢量)的对齐方式时,可以使用AxisAngleRotation3D。旋转是围绕父变换类的中心点和旋转对象的向量轴定义的轴应用的。

    或者,您可以使用QuaternionRotation3D 对象,它允许您指定四元数而不是轴方向和旋转角度。四元数本质上包括这两者。当人们想要轻松地在两个方向之间进行插值(每个方向都被描述为基于四元数的旋转)时,通常会使用它,如果要在两个方向之间插值的旋转定义为轴/角度,则这会更加困难。

    如果您需要仅使用 SharpDX 的轴旋转来模拟具有指定中心的完整旋转变换,那么您将需要组合多个变换:

    1. 将模型平移到指定中心(中心成为新原点),
    2. 绕指定轴旋转指定角度,
    3. 将模型向后平移(与 1. 相反)。

    【讨论】:

      猜你喜欢
      • 2017-05-06
      • 2012-03-30
      • 2011-10-10
      • 2012-08-03
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多