给定摄像机面对的方向的3D矢量和3D空间中3D对象的方向/方向矢量,我如何计算鼠标指针在屏幕上必须跟随的二维斜率,以便在视觉上沿着所述对象的方向移动?
基本上,我希望能够单击一个箭头,并通过拖动它来使它来回移动,但前提是鼠标指针沿着箭头的长度拖动(粗略地),即沿着它所指向的方向拖动。
谢谢
发布于 2012-01-27 17:28:19
我不确定我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 product、Vector cross product来计算所需的向量。在您的示例中,一旦找到两个向量,vector dot product还可以用于输出它们之间的角度。
发布于 2012-01-27 18:31:39
这在一定程度上取决于您将3d现实世界坐标转换为2d屏幕坐标所使用的转换,例如透视、等轴测等。您通常会使用向前(3d -> 2d)和向后(2d -> 3d)变换,其中向后变换会丢失信息。(即向前看,每个三维点将映射到唯一的二维点,但从该点返回可能不会产生相同的三维点)。您通常可以将鼠标指针投影到对象上,以获得缺少的尺寸。
对于鼠标拖动,通常会让用户指定一个操作(在投影平面上平移、放大或缩小,或围绕锚点旋转)。您的输入是鼠标在拖动开始和结束时的坐标,您可以将其转换为3d坐标系以获得两个3d坐标,这将为您提供用于拖动/平移等的dx、dy、dz。
https://stackoverflow.com/questions/9031088
复制相似问题