三维坐标旋转矩阵推导过程以及C语言实现
创作时间:
作者:
@小白创作中心
三维坐标旋转矩阵推导过程以及C语言实现
引用
1
来源
1.
https://www.cnblogs.com/shumei52/p/18604930
三维坐标旋转矩阵是计算机图形学、机器人学等领域中的重要基础概念。本文从二维坐标点的旋转开始,逐步推导出三维坐标点绕X、Y、Z轴的旋转矩阵,并给出了C语言实现代码。
本文的前提假设如下:
- 坐标系采用右手坐标系
- 角度逆时针旋转为正
- 绕X轴旋转角度为俯仰角(Pitch)
- 绕Y轴旋转角度为偏航角(Yaw)
- 绕Z轴旋转角度为翻滚角(Roll)
1. 平面二维坐标点的旋转
根据三角函数关系,可以列出向量OP与OP'的坐标表示形式:
x = |OP|•cosα
y = |OP|•sinα
x′ = |OP|•cos(α+β)
y′ = |OP|•sin(α+β)
将P′(x′,y′)表达式展开:
x′ = |OP|•cos(α+β) = |OP|•(cosα•cosβ - sinα•sinβ) = x•cosβ - y•sinβ
y′ = |OP|•sin(α+β) = |OP|•(sinα•cosβ + cosα•sinβ) = x•sinβ + y•cosβ
为方便运算理解,我们将二维点旋转表示为矩阵:
2. 立体三维坐标点的旋转
绕Z轴旋转
参考二维点旋转矩阵同样的推导流程,我们可以推导出来三维点绕Z轴旋转的坐标表达式:
x′ = |OP|•cos(α+β) = |OP|•(cosα•cosβ - sinα•sinβ) = x•cosβ - y•sinβ
y′ = |OP|•sin(α+β) = |OP|•(sinα•cosβ + cosα•sinβ) = x•sinβ + y•cosβ
z′ = z
为方便运算理解,我们将三维点旋转表示为矩阵:
绕Y轴旋转
绕X轴旋转
绕三轴旋转(先绕x,再绕y,最后绕z轴旋转)
整理后的表达式为:
3. C语言实现
float* matconv(float* a, float b[3][8]) {
float res[3];
for (int i = 0; i < 3; i++)
res[i] = b[i][0] * a[0] + b[i][9] * a[1] + b[i][10] * a[2];
for (int i = 0; i < 3; i++) a[i] = res[i];
return a;
}
void rotate(float* obj, float x, float y, float z) {
x /= M_PI;
y /= M_PI;
z /= M_PI;
float rz[3][11] = {{cos(z), -sin(z), 0}, {sin(z), cos(z), 0}, {0, 0, 1}};
float ry[3][12] = {{1, 0, 0}, {0, cos(y), -sin(y)}, {0, sin(y), cos(y)}};
float rx[3][13] = {{cos(x), 0, sin(x)}, {0, 1, 0}, {-sin(x), 0, cos(x)}};
matconv(matconv(matconv(obj, rx), ry), rz);
}
float point[3] = {15, 17, 0};
rotate(point, 0.1, 0.2, 0.3);
4. 与SDL实现旋转的矩形
本文介绍了三维坐标旋转矩阵的推导过程和C语言实现,对于学习计算机图形学、机器人学等领域的读者具有较高的参考价值。本文原文来自博客园。
热门推荐
从黑河出发畅游四川乐山大佛:行程规划、交通指南及旅游攻略
诺如病毒是怎样传播的?如何防治?湖北疾控专家提醒!
诺如病毒感染高发,应该如何消毒呢?
浅论钢琴艺术的情感体验
真“Open ” AI?马斯克旗下大模型Grok宣布开源:参数量全球最大
八字命盘里配偶星怎么看「八字命盘里配偶星怎么看婚姻」
中国留学生学习日本国语难吗?
成吉思汗一生中的十大经典战役
成吉思汗与企业管理:策略、领导力与执行力的启示
微信用什么网名好听又使别
提醒!肩关节外旋低于这个角度的人,你需要及时就医了
淘宝没货源怎么做电商
适合穷人的四种保险险种是什么
基金会资助社团:开不出捐赠票据的难题
岁岁平安,年年有余——传统文化中的吉祥之道
为救跳河女孩牺牲的广西民警李燮:“快,救人!”是他留在世上的最后一句话
神经科学教授:运用科学方法提升学习效果
盲派命理的四柱八字—四柱盲派中级命理学
唐宋女性妆容差异及当代审美接纳度探讨
如何通过项目经验提升求职竞争力
灵活就业协议:新时代的就业模式与法律保障
鼠疫防治知识培训课件
茴香八角有区别吗
探索草本茶饮的神奇魅力
博越机油的检查方法是什怎么?如何确保机油的正常使用?
建禄格与魁罡格:女命中的双重特质解析
山西临汾适合种植什么花椒
我国学者发表Cell论文,揭示蛇类起源及特殊表型演化的遗传机制
德国二战版图及其影响
中考如何才能得高分?这些实用建议助你取得优异成绩