三维坐标旋转矩阵推导过程以及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语言实现,对于学习计算机图形学、机器人学等领域的读者具有较高的参考价值。本文原文来自博客园。
热门推荐
五行命中缺火意味着什么命格
脑动静脉畸形影像学检查方法
警惕!苹果App Store首次出现OCR恶意应用,如何防范?
都知道CPU、GPU,那NPU、DPU、TPU、IPU又是个啥?
维生素B6为什么被称为“万能钥匙”?
公积金对冲还贷条件及办理流程详解
怎么区别急性咽喉炎和慢性咽喉炎
粪便干湿分离机是什么
常用的非甾体抗炎药有哪些
苏州社保公积金缴纳标准2024年最新,苏州五险一金缴纳基数和比例
7 种实现 CSS 三角形的原理与方法 以及 三角形在网页设计中的作用
个人养老金账户可以注销吗
全球视野:哪些国家对双重国籍持开放态度?
流感≠感冒!常被忽视的流感到底该如何应对?
服务器环境配置需要满足哪些要求?
石锅拌饭家常做法:两种不同版本,让你轻松做出正宗韩式美味
历史上的南昌竟然有过这么多名字
如何面对现实的残酷?从个人经历谈建立自信的方法
解读:公司未足额缴纳社保,可以要求公司补缴社保吗?
四幅广为流传朱元璋画像,哪一幅才是真实的?
燕麦片好消化吗
房屋租赁合同示范文本及律师填写指南
微喷带的使用年限与水质有关
鲨鱼肉能吃吗?营养价值与食用指南全解析
大额逆回购到期,央行今日回笼7165亿,资金面维持紧平衡
补铁别只知道吃红枣!真正补铁的 23 种食物都在这里
雪碧鸡丝凉面的做法
历史与现状: 妈祖文化在中国大陆和东南亚之间的交流互动
关于中医穴位埋线减肥,你想知道的都在这儿!
2025科技、传媒和电信行业预测:生成式AI将带来重大转折