【问题标题】:3D space: following the direction that an object is pointing towards, using the mouse pointer3D 空间:跟随对象指向的方向,使用鼠标指针
【发布时间】:2012-02-20 07:29:17
【问题描述】:

给定相机朝向的方向的 3D 向量和 3D 空间中 3D 对象的方向/方向向量,我如何计算鼠标指针必须在屏幕上按顺序跟随的 2 维斜率视觉上沿着所述物体的方向移动?

基本上,我希望能够单击箭头并通过拖动它来前后移动,但前提是鼠标指针(大致)沿着箭头的长度拖动,即沿着它的方向指向。

谢谢

【问题讨论】:

    标签: algorithm math drag-and-drop 3d dot-product


    【解决方案1】:

    我不确定我是否 100% 理解您的问题。你介意张贴一张图表吗?

    您可能会对这些感兴趣。我回答了calculate a local X Y Z axis given a camera direction(看)vector 之前的问题,也回答了translate an object in a plane parallel to the camera 的问题。

    这两个示例都使用Vector dot productVector cross product 来计算所需的向量。在您的示例中,vector dot product 也可用于在找到两个向量后输出它们之间的角度。

    【讨论】:

    【解决方案2】:

    这在一定程度上取决于您用于将 3d 真实世界坐标转换为 2d 屏幕坐标的转换,例如透视、等距等...您通常会进行前向 (3d -> 2d) 和后向 (2d -> 3d) 变换,其中后向变换会丢失信息。 (即,前进每个 3d 点将映射到唯一的 2d 点,但从该点返回可能不会产生相同的 3d 点)。您通常可以将鼠标点投影到对象上以获取缺失的尺寸。

    对于鼠标拖动,您通常让用户指定一个操作(在投影平面上平移、放大或缩小,或围绕锚点旋转)。您的输入是拖动开始和结束时的鼠标坐标,您将其转换为 3d 坐标系以获得两个 3d 坐标,这将为您提供 dx、dy、dz 用于拖动/平移等...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      相关资源
      最近更新 更多