微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从3d点位置获得3d欧拉旋转角度?

如何解决如何从3d点位置获得3d欧拉旋转角度?

我有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 举报,一经查实,本站将立刻删除。