问题描述
我有3D关节位置,这些位置组成了骨骼模型的手腕,肘部和肩膀。 使用这些xyz位置,我需要用C#计算肘关节的旋转。
我正在使用以下方法计算旋转角度:
Vector3D RShoulder = new Vector3D(-19.35648587195006,147.647413538393,-2.9541880551614863);
Vector3D RElbow = new Vector3D(-24.471918996224076,119.71037082996399,-5.253622171597789);
Vector3D RWrist = new Vector3D(-33.7036230414419,94.35009025664745,-4.104542192770994);
double AngleRElbow = AngleBetweenTwoVectors(RElbow - RShoulder,RElbow - RWrist);
public double AngleBetweenTwoVectors(Vector3D vectorA,Vector3D vectorB)
{
double dotProduct = 0.0;
vectorA.normalize();
vectorB.normalize();
dotProduct = Vector3D.DotProduct(vectorA,vectorB);
return (double)Math.Acos(dotProduct) / Math.PI * 180;
}
这给了我
AngleRElbow 124.277401203942
据我所读,这是正确的方法。
现在,我需要找到与该角度相对应的欧拉角(或四元数)。 我怎样才能做到这一点?我有足够的信息吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)