位置: 编程技术 - 正文

OpenGL学习(1):旋转平移矩阵的构造(opengles 旋转 平移 缩放)

编辑:rootadmin

推荐整理分享OpenGL学习(1):旋转平移矩阵的构造(opengles 旋转 平移 缩放),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:opengl三维旋转代码,opengl 旋转矩阵,opengl 旋转矩阵,opengl旋转一定角度的数字,opengl三维旋转代码,opengl绕原点旋转,opengl绘制图形旋转,opengl旋转一定角度的数字,内容如对您有帮助,希望把文章链接给更多的朋友!

旋转平移矩阵在VC和三维建模中是十分重要的

将 A(i, j) 作为矩阵 A 中第 i 行、第 j 列的项。例如,A(3, 2)是矩阵 A 中第 3 行、第 2 列的项。假定 A、B 和 C 是矩阵,且 AB = C,则 C 的项计算如下:C(i, j) =(A 的第 i 行)?(B 的第 j 列)。

如果将平面中的点视为 1×2 矩阵,则可通过将该点乘以一个 2×2 矩阵来将该点变换。下图显示了应用于点 (2, 1) 的几个变换。

前图中显示的所有变换都是线性变换。某些其他变换(如平移)不是线性的,不能表示为与 2×2 矩阵相乘的形式。假定您要从点 (2, 1) 开始,将其旋转 度,在 x 方向将其平移 3 个单位,在 y 方向将其平移 4 个单位。可通过先使用矩阵乘法再使用矩阵加法来完成此操作。

后面跟一平移(与 1×2 矩阵相加)的线性变换(与 2×2 矩阵相乘)称为仿射变换。将仿射变换存储于一对矩阵(一个用于线性部分,一个用于平移)的替换方案是将整个变换存储于 3×3 矩阵。若要使其起作用,平面上的点必须存储于具有虚拟第三坐标的 1×3 矩阵中。通常的方法是使所有的第三坐标等于 1。例如,矩阵 [2 1 1] 代表点 (2, 1)。下图演示了表示为与单个 3×3 矩阵相乘的仿射变换(旋转 度;在 x 方向上平移 3 个单位,在 y 方向上平移 4 个单位)。

在前面的示例中,点 (2, 1) 映射到了点 (2, 6)。请注意,3×3 矩阵的第三列包含数字 0,0,1。对于仿射变换的 3×3 矩阵而言,情况将总是如此。重要的数字是列 1 和列 2 中的 6 个数字。矩阵左上角的 2×2 部分表示变换的线性部分,第 3 行中的前两项表示平移。

在 GDI&#; 中,可以在 Matrix 对象中存储仿射变换。由于表示仿射变换的矩阵的第三列总是(0,0,1),因此在构造 Matrix 对象时,只需指定前两列中的 6 个数。Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) 语句构造上面图形中显示的矩阵。

复合变换

复合变换是一个接一个的变换序列。请考虑下面列表中的矩阵和变换:矩阵 A 旋转 度

OpenGL学习(1):旋转平移矩阵的构造(opengles 旋转 平移 缩放)

矩阵 B 在 x 方向上缩放 2 倍

矩阵 C 在 y 方向上平移 3 个单位

如果从由矩阵 [2 1 1] 表示的点 (2, 1) 开始,并先后乘以 A、B、C,则点 (2, 1) 将按列出的顺序经历三种变换。

[2 1 1]ABC = [-2 5 1]

可以不将复合变换的三部分存储于三个独立的矩阵,而是一起乘以 A、B 和 C 来得到存储整个复合变换的单个的 3×3 矩阵。假定 ABC = D。则一个点乘以 D 得出的结果与一个点先后乘以 A、B、C 的结果相同。

[2 1 1]D = [-2 5 1]

下图显示了矩阵 A、B、C 和 D。

复合变换的矩阵可通过将几个单独的变换矩阵相乘而得到,这就意味着任何仿射变换的序列均可存储于单个的 Matrix 对象中。警告:

复合变换的顺序非常重要。一般说来,先旋转、再缩放、然后平移,与先缩放、再旋转、然后平移是不同的。同样,矩阵相乘的顺序也是重要的。一般说来,ABC 与 BAC 不同。

下图显示该矩阵。

本文转载于

chensavvy的博客

Dev C++环境中使用OpenGL 引入dev-c++实际上已经包含了开发opengl程序基本的功能可以简单的选择:新建-multimedia-opengl,建立一个opengl程序。这个程序包含了基本的opengl程序的结构

VC6.0配置OpenGL OpenGL官网:

QT5+VS软件开发环境配置 任务:完成Qt5加载到VS环境下,编程运行Qt应用程序,有详细步骤,最后完成一个空白窗口UI运行显示1.基本配置PC:Win8.x(win8.1)VS:VisualStudioQt:qt-opensour

标签: opengles 旋转 平移 缩放

本文链接地址:https://www.jiuchutong.com/biancheng/369440.html 转载请保留说明!

上一篇:OpenGL--纹理组合器函数(opengl纹理叠加)

下一篇:Dev C++环境中使用OpenGL(dev c++怎么配置环境)

  • 上年度已交房产税减免如何做账务处理
  • 发票勾选认证必须对应当期成本吗
  • 企业一般会涉及哪些行业
  • 业务宣传费和广告费的扣除标准
  • 已认证的专票可以取消认证吗
  • 个体户定额征收标准
  • 残保金在职职工人数临时工算吗
  • 境外企业在境内取得的收入所得税
  • 已贴花的凭证凡修改后所载金额增加的部分应补贴印花
  • 贷款逾期的本金怎么计算
  • 存货的计价方法及公式
  • 财务报表分析方法有
  • 税金及附加多计提了汇算清缴怎么办
  • 其他流动资产待抵扣进项税额
  • 转贴现视为贷款银行如何进行账务处理?
  • 未按期预缴企业个税
  • 企业出租自有厂房超经营吗
  • 如何防止虚开发票 等舞弊行为?
  • 财务报告报送与信息采集季报怎么填写
  • 未分配利润为负的原因
  • 企业可以用当月的进项票抵扣上月的销项吗?
  • 个税申报需要补税是什么情况
  • 旅行社代订机票发票报销
  • 房子报废
  • 免税农产品进项抵扣计算
  • 资产总额和净资本的关系
  • 小企业会计准则会计科目表
  • 企业发生的培训费能否在所得税前扣除
  • 不发工资先去劳动局投诉还是仲裁
  • php中变量有哪些基本数据类型?
  • 房地产企业收入确认
  • transit code
  • 豁免债权如何做账
  • vue有哪些内容
  • 路由vue-router
  • 猿创部落是干什么的
  • chs命令
  • wordpress图片模板
  • 发票认证的目的和意义
  • 产权转移书据印花税减半征收政策
  • 合同印花税可以年底报一次
  • 公司员工私车公用协议
  • 广播影视服务税率2023
  • 收到以前年度增值税退税账务处理怎么做账
  • sqlserver2005属于
  • 生育津贴到公司了公司什么时候发给个人
  • 我们可以收到很多礼物
  • 减免税款属于政府补助利得吗
  • 进项税额是怎么算的
  • 行政机关现金管理办法
  • 生产线更新改造替换的旧设备
  • 社保计入管理费用什么科目
  • 公司办公室装修装修
  • 劳务公司发放农民工工资要交个税吗
  • 处置全资子公司合并报表
  • 申报工资总额除以在职人员人数
  • 小规模商贸公司没有进项票怎么办
  • 新会计准则会计科目明细表
  • 公司给非职工人员发工资
  • 没有关联企业怎么选不了否
  • sqlserver如何更改数据类型
  • mysql多表查询方式
  • mysql中间件有哪些
  • sql局部变量标识符
  • ubuntu恢复rm –rf删除的文件
  • mac系统操作的小技巧
  • warning bios upgrade
  • cpqdfwag.exe是什么进程 能结束吗 cpqdfwag进程查询
  • c:windowssys:em32mtgyu.dll 内存分配访问无效的解决办法
  • android 自定义dialog
  • Zen Coding css,html缩写替换大观 快速写出html,css
  • 如何设置div自适应宽度
  • python 读取数据库
  • Node.js中的事件循环是什么
  • hadoop有几个版本
  • js跳出if语句
  • js右键菜单
  • js获取节点值
  • js禁用页面所以输入框
  • 宁夏电子税务局登录入口
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设