收藏 分享(赏)

旋转角和旋转矩阵.doc

上传人:wspkg9802 文档编号:6862376 上传时间:2019-04-25 格式:DOC 页数:2 大小:91.50KB
下载 相关 举报
旋转角和旋转矩阵.doc_第1页
第1页 / 共2页
旋转角和旋转矩阵.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

1、1.旋转角度已知旋转前向量为 P, 旋转后变为 Q。由点积定义可知:可推出 P,Q 之间的夹角为:2. 旋转轴旋转角所在的平面为有 P 和 Q 所构成的平面,那么旋转轴必垂直该平面。假定旋转前向量为 a(a1, a2, a3), 旋转后向量为 b(b1, b2, b3)。由叉乘定义得:所以旋转轴 c(c1, c2, c3)为:3. 罗德里格旋转公式3.1 公式已知单位向量 n , 将它旋转 角。由罗德里格旋转公式,可知对应的旋转矩阵根据旋转前后的两个向量值,使用上面的方法,先求出旋转角度和旋转轴,然后用罗德里格旋转公式即可求出对应的旋转矩阵。具体实现过程可以调用 Vector3 类,利用里面的

2、叉乘函数 crossProduct 计算出旋转前后向量的旋转轴:Vector3 rotationAxis = crossProduct( vectorBefore, vectorAfter)调用求向量模函数和 math.h 里的 acos 函数计算出旋转角度:Float rotationAngle = acos(vectorBefore * vectorAfter / vectorMag(vectorBefore) /vectorMag(vectorAfter)然后再利用上面的公式可求出旋转矩阵:rotatinMatrix00 = cos(angle) + u.x * u.x * (1 - c

3、os(angle);rotatinMatrix01 = u.x * u.y * (1 - cos(angle) - u.z * sin(angle);rotatinMatrix02 = u.y * sin(angle) + u.x * u.z * (1 - cos(angle);rotatinMatrix10 = u.z * sin(angle) + u.x * u.y * (1 - cos(angle);rotatinMatrix11 = cos(angle) + u.y * u.y * (1 - cos(angle);rotatinMatrix12 = -u.x * sin(angle) + u.y * u.z * (1 - cos(angle);rotatinMatrix20 = -u.y * sin(angle) + u.x * u.z * (1 - cos(angle);rotatinMatrix21 = u.x * sin(angle) + u.y * u.z * (1 - cos(angle);rotatinMatrix22 = cos(angle) + u.z * u.z * (1 - cos(angle);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报