【发布时间】:2018-08-07 07:02:48
【问题描述】:
我有两个方向,我正在尝试计算特定轴上的角度。派生方向的对象不是静态对象,因此我正在努力研究数学以找出我需要做的事情。
仅供参考,如果需要,我有用于计算方向的起点和终点。
这是一个显示我正在寻找的图表:
上面的图片是统一的自上而下的视图,它显示了我想要的角度。
从上图中可以看出问题,即方向不在同一高度上,所以我不能使用 vector3.angle 函数,因为它不会给我正确的角度值。
本质上,我想知道我需要将红线向左旋转多少(顶视图),以便它与蓝色(顶视图)对齐。
我需要这个的原因是因为我正试图找到一种方法来从我的跳跃运动传感器中获取手指的左右角度。
这是我另一个问题的通用版本: Leap Motion - Angle of proximal bone to metacarpal (side to side movement)
如果您需要,它将提供有关问题的更具体信息,并且它具有更具体的屏幕截图。
**更新: 重新阅读我的问题后,我可以看到它不是特别清楚,所以在这里我希望能更清楚。我正在尝试根据跳跃运动跟踪数据计算手指的角度。特别是手指相对于掌骨的角度(骨头是手背)。演示我的意思的一种简单方法是让您将食指左右移动(即向拇指移动,然后远离拇指)。
蓝线沿着掌骨,您的手指在静止位置与掌骨对齐。我要计算的是蓝线和红线之间的角度(用绿线标记)。我无法使用 Vector3.Angle,因为该值还考虑了手指的弯曲。我需要以某种方式将手指的方向“拉平”,因此基本上忽略了弯曲,只看一边到另一边的角度。第二张图有望说明我的意思。
在此图中: 蓝线代表手指的实际方向(取自近端骨 - 指关节到第一个关节) 绿线代表掌骨方向(要比较的方向) 红线代表我想将蓝线“转换”成什么,同时保持它的左右角度(如第一手图所示)。
还值得一提的是,我不能总是只看 x 和 z 轴,因为这只手会在旋转时移动。
我希望这有助于澄清问题并真正感谢迄今为止收到的帮助。
【问题讨论】:
-
如何为每条线创建临时二维向量,使它们在同一平面上,然后使用vector3.angle?
-
鉴于物体在旋转和移动,我如何确定使用哪个轴?
-
您的参考平面将是在两个向量之间创建的平面,就好像您将它们投影到一个平面上(如您的图片所示)。为了找到两个向量之间的角度,您首先必须确定该角度所在的平面。
-
我不确定我明白你的意思。你能提供一个代码示例吗?我将如何确定是否应该从 (x,y)、(x,z) 或 (y,z) 等创建 vector2?
-
不快!这是相当复杂的数学。我建议查看以下链接或搜索类似内容:Angle between two 3d vectors
标签: unity3d vector rotation quaternions