- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一步步学OpenGL(二)
七 旋转变换
背景
继上个教程的平移变换之后,这里开始学习旋转变换,也就是能够实现让一个点沿着一个坐标轴旋转一定的角度。旋转变换将总是改变位置的其中两个坐标,第三个坐标保持不变,这意味着旋转的路径会保持在其中一个平面上:XY平面(绕Z轴旋转),YZ平面(绕X轴旋转)和XZ平面(绕Y轴旋转)。也有一些复杂的旋转变换允许图形绕着任意向量旋转,但在我们这个阶段还不需要。
让我们从普遍统一的角度来定义这个问题。看下面这个图:
我们想从(x1,y1)沿着圆移动到(x2,y2),换句话说就是将点(x1,y1)旋转a2角度。假设圆的半径是1,那有下面的式子:
我们用下面的三角函数变换公式来推导x2和y2的表达式:
从上面的公式我们可以得到:
再上面的图中我们看的是XY平面,Z轴指向纸面。X和Y放在4维矩阵里面的的话那么上面的公式可以写成下面的矩阵形式(不影响Z和W分量):
如果我们想实现绕X或Y轴旋转,那么公式基本上是类似的但是变换矩阵的排布略有不同。
下面是绕Y轴旋转的旋转变换矩阵(y不变):
绕X轴旋转的旋转变换矩阵(x不变):
源代码详解
在上个教程的基础上这里代码的变换非常少。我们只是改变代码中变换矩阵的内容,将平移变换矩阵换成了旋转变换矩阵而已:
World.m[0][0]=cosf(Scale);World.m[0][1]=-sinf(Scale);World.m[0][2]=0.0f; World.m[0][3]=0.0f;
World.m[1][0]=sinf(Scale);World.m[1][1]=cosf(Scale);World.m[1][2]=0.0f; World.m[1][3]=0.0f;
World.m[2][0]=0.0f;World.m[2][1]=0.0f;World.m[2][2]=1.0f;World.m[2][3]=0.0f;
World.m[3][0]=0.0f;World.m[3][1]=0.0f;World.m[3][2]=0.0f;World.m[3][3]=1.0f;
As you can see we rotate around the Z axis. You can try the other rotations as well but I think that at this point without true projection from 3D to 2D the other rotations look a bit odd. We will complete them in a full transformation pipeline class in the coming tutorials.
这样会看到图形绕着Z轴旋转了。我们也可以尝试绕其他轴的旋转,但是没有从3d到2d的投影另外两种旋转看上起去会很奇怪,我们会在后面教程中在一个完整的图形变换管线类中来完善它。
示例Demo
#include stdio.h
#include string.h
#include math.h
#include GL/glew.h
#include GL/freeglut.h
#include ogldev_util.h
#include ogldev_math_3d.h
GLuint VBO;
GLuint gWorldLocation;
const char* pVSFileName = shader.vs;
const char* pFSFileName = shader.fs;
static void RenderSceneCB()
{
glClear(GL_COLOR_BUFFER_BIT);
static float Scale = 0.0f;
Scale += 0.001f;
// 旋转变换矩阵
Matrix4f World;
World.m[0][0] = cosf(Scale); World.m[0][1] = -sinf(Scale); World.m[0][2] = 0.0f; World.m[0][3] = 0.0f;
World.m[1][0] = sinf(Scale); World.m[1][1] = cosf(Scale); World.m[1][2] = 0.0f; World.m[1][3] = 0.0f;
World.m[2][0] = 0.0f; World.m[2][1] = 0.0f; World.m[2][2]
您可能关注的文档
- 市场营销原理与实训彭石普项目十解读.ppt
- 下城区、拱墅区2011学年第一学期九年级科学期末卷1讲解.doc
- C程序设计22--用户自己建立数据类型3讲解.ppt
- 市场营销之产品策略解读.ppt
- 市场营销专业14级《电子商务》课程实训报告解读.doc
- C程序设计课件讲解.ppt
- 下肢矫形器的种类与应用讲解.ppt
- 严明党的纪律讲解.doc
- 手术室用药安全隐患解读.ppt
- 政治必修一经济生活第一单元复习课件解读.ppt
- 2026年高考英语总复习讲义教师用书选择性必修第二册.pdf
- 2026年高考英语总复习讲义教师用书选择性必修第一册.pdf
- 2026年高考英语总复习讲义教师用书选择性必修第四册.pdf
- 2026年高考英语总复习讲义教师用书必修第一册.pdf
- 第13课 现代交通运输的新变化(任务型教学课件)-2025-2026学年高中历史选择性必修2(统编版).pptx
- 2.磁感应强度 磁通量-2025-2026学年高中物理必修第三册(人教版2019).pptx
- 4.2 携手促发展(教学课件)-2025-2026学年九年级道德与法治下册(统编版五四学制).pptx
- 专题02 光现象(培优讲义)(原卷版)(5考点 4实验 8命题突破 2个难点)-2026年中考物理一轮复习讲练(全国通用).docx
- 第三节 碳达峰与碳中和(教学课件)-2025-2026学年八年级化学全一册(鲁教版五四学制2024).pptx
- 中考作文之材料作文审题立意(解析版)-2026年中考语文一轮复习微专题讲练(湖南通用).docx
最近下载
- 7080后怀旧老课本-小学数学-第1册.pdf VIP
- 2025年广东省春季高考高三英语模拟试卷试题(含答案).docx VIP
- [(精华版)最新国家开放大学电大《建筑材料(A)》机考终结性9套真题题库.docx VIP
- 太原科技大学2022-2023学年《马克思主义基本原理概论》期末考试试卷(A卷)含参考答案.docx
- 蒂森MC2-H(MHC2主板) 1. ECOR控制系统 9.6.3 调试手册.pdf
- 太原科技大学2023-2024学年《马克思主义基本原理概论》期末考试试卷(A卷)含参考答案.docx
- 2025年福建省综合性评标专家库评标专家考试历年参考题库含答案详解.docx VIP
- TCCFAGS 037-2023 现制茶饮门店食品安全自查指引.pdf VIP
- 2024年福建省综合性评标专家库评标专家考试练习题及答案.docx VIP
- 太原科技大学2024-2025学年《马克思主义基本原理概论》期末考试试卷(A卷)含参考答案.docx
原创力文档


文档评论(0)