- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HYPERLINK /xpvincent/archive/2013/02/15/2912836.html 根据旋转前后的向量值求旋转矩阵
如果已知旋转前后的一向量的变化,那么该如何求这个旋转矩阵呢?本篇结合Rodrigues rotation formula,介绍一下该旋转矩阵的求法。
1.旋转角度
已知旋转前向量为P, 旋转后变为Q。由点积定义可知:
可推出P,Q之间的夹角为:
2. 旋转轴
由1中可知,旋转角所在的平面为有P和Q所构成的平面,那么旋转轴必垂直该平面。
假定旋转前向量为a(a1, a2, a3), 旋转后向量为b(b1, b2, b3)。由叉乘定义得:
所以旋转轴c(c1, c2, c3)为:
3.? 罗德里格旋转公式(Rodrigues rotation formula)
3.1 公式
已知单位向量?, 将它旋转θ角。由罗德里格旋转公式,可知对应的旋转矩阵?:
其中I是3x3的单位矩阵,
?是叉乘中的反对称矩阵r:
3.2 公式证明
假设在坐标系(x, y, z)中,向量v=ax+by+cz,v绕z轴逆时针旋转θ角后得到新的向量v’。
根据2维(x,y)面上的旋转公式可得:
推出:
已知:
将上式带入v’的公式:
? 将cz替换掉,可得:
将上式中的叉乘表示为反对称矩阵得:
另外:
最终可以推出:
上式即为罗德里格旋转公式。
4. 求旋转矩阵
根据旋转前后的两个向量值,使用上面的方法,先求出旋转角度和旋转轴,然后用罗德里格旋转公式即可求出对应的旋转矩阵。
C#的实现代码如下:
void Calculation(double[] vectorBefore, double[] vectorAfter)
{
double[] rotationAxis;
double rotationAngle;
double[,] rotationMatrix;
rotationAxis = CrossProduct(vectorBefore, vectorAfter);
rotationAngle = Math.Acos(DotProduct(vectorBefore, vectorAfter) / Normalize(vectorBefore) / Normalize(vectorAfter));
rotationMatrix = RotationMatrix(rotationAngle, rotationAxis);
}
double[] CrossProduct(double[] a, double[] b)
{
double[] c = new double[3];
c[0] = a[1] * b[2] - a[2] * b[1];
c[1] = a[2] * b[0] - a[0] * b[2];
c[2] = a[0] * b[1] - a[1] * b[0];
return c;
}
double DotProduct(double[] a, double[] b)
{
double result;
result = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
return result;
}
double Normalize(double[] v)
{
double result;
result = Math.Sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
return result;
}
double[,] RotationMatrix(double angle, double[] u)
{
double norm = Normalize(u);
double[,] rotatinMatrix = new double[3,3];
u[0] = u[0] / norm;
u[1] = u[1] / norm;
u[2] = u[2] / norm;
rotatinMatrix[0, 0] = Math.Cos(angle) + u[0] * u[0] * (1 - Math.Cos(angle));
rotatinMatrix[0, 0] = u[0] * u[1] * (1 - Math.Cos(angle) - u[2] * Math.Sin(angle));
rotatinMatrix[0, 0] = u[1] * Math.Sin(angle) + u[0] * u[2] * (1 - Math.Cos(angle));
您可能关注的文档
- 反应堆材料学chapter01绪论part1摘要.ppt
- 方剂学药物组成.doc
- 方阵幂可验证安全云计算外包方案研究.docx
- 防火涂层厚度检测方案.doc
- 防雾霾扬尘专项方案.doc
- 房产销售转正申请.doc
- 房地产防水材料需求分析.ppt
- 房地产公司产品标准化实施方案.ppt
- 房地产公司人力资源部管理制度.doc
- 房地产行销外拓入门.ppt
- 2025年精神学习教育工作开展情况报告工作总结工作情况阶段性总结报告.docx
- 3篇 2025年5月国有企业主题党日工作方案+2025年6月主题党日工作方案.docx
- 2025年 市开展精神学习教育阶段性工作总结+精神学习教育工作开展情况汇报.docx
- 2025年在乡镇中纠治党员干部和公职人员违规饮酒问题动员部署会上的讲话(通用汇编).docx
- 2025年班子精神学习教育查摆问题清单+精神学习教育工作开展情况总结汇报+精神学习教育进展情况报告.docx
- 2025年在《党政机关厉行节约反对浪费条例》理论学习中心组上的研讨发言(深入精神学习教育以优良作风推动高质量发展).docx
- 在全县纠治党员干部和公职人员违规饮酒问题警示教育大会上的讲话稿+在全乡以案为鉴整治党员干部和公职人员违规饮酒问题部署推进会上的讲话.docx
- 2025年集中纠治党员干部和公职人员违规饮酒问题专项整治工作方案+在违规饮酒警示教育大会暨集体谈心谈话讲话提纲、部署推进会上的讲话提纲.docx
- 3篇 2025年市委书记在全市以中央通报违规吃喝事件为鉴警示教育大会上的讲话.docx
- 2025年领导班子、领导干部学习教育查摆问题清单及整改措施 3篇.docx
最近下载
- IPC J-STD-001H 2020 EN 最新英文 版的.pdf
- 广东省广州市广州大学附属中学2024-2025学年下学期七年级开学考试 数学试卷(含解析).docx VIP
- 乙烯生产技术和工艺流程介绍.ppt
- 2023年最新的材料作文:温暖.docx
- 地下综合管廊电气设备安装施工方案.docx VIP
- 2024年国家电投集团江苏电力限公司招聘79人【高频考点汇总500题】模拟卷及参考答案详解.docx
- ISO9001 质量管理体系全套(质量手册+程序文件+表格记录全套).doc
- 赞比亚中资企业录.doc
- 新22J07 室外工程 参考图集.docx VIP
- 课件参考jmp122中文使用手册reliability methods.pdf
文档评论(0)