位置: 编程技术 - 正文

OpenGl学习之坐标变换(上)(opengl绘制坐标轴)

编辑:rootadmin

推荐整理分享OpenGl学习之坐标变换(上)(opengl绘制坐标轴),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:opengl如何设置坐标原点,opengl坐标系统,opengl坐标转化为屏幕坐标,opengl坐标转化为屏幕坐标,opengl如何设置坐标原点,opengl坐标系统,opengl如何设置坐标原点,opengl如何设置坐标原点,内容如对您有帮助,希望把文章链接给更多的朋友!

坐标变换是深入理解三维世界的基础,非常重要。学习这部分首先要清楚几个概念:视点变换、模型变换、投影变换、视口变换。

  在现实世界中,所有的物体都具有三维特征,但计算机本身只能处理数字,显示二维的图形,因此我们要将三维物体用二维数据表示出来,这一联系的点就是坐标。在OpenGL三维空间中坐标的形式有两种:世界坐标系和局部坐标系。

  ①世界坐标系:始终固定不变。举例,以太阳系中心太阳为中心原点,建立世界坐标系的话,地球绕太阳的公转运动是世界坐标的变换。

  ②局部坐标系:物体本身的中心。地球的自传就是局部坐标系下的旋转变换,缩放也是局部坐标系下的变换。

  三维物体到二维图像的转换是通过视点变换、模型变换、投影变换、视口变换来实现的,这点类&#;于用照相机拍照的过程。

  (1)视点变换-->选择观察点,对准物体

  (2)模型变换-->调整物体(即模型),包括旋转、缩放、平移

  (3)投影变换-->将物体进行投影放大或缩小,投影到二维画布或者叫底片上,形成二维图像

  (4)视口变换-->最终决定生成的二维图像到底显示在屏幕的什么位置和显示窗口的大小,可以理解对图像进行缩放。

  投影变换和矩阵栈的操作稍微复杂点,放在下一篇,由于视口变换是针对投影变换形成的二维图像做操作的,所以和投影变换一起放到下一篇,这里先介绍其他两种变换。

  首先,先了解在OpenGL中是怎么变换的:

  OpenGL中的各种转换是通过矩阵运算实现的,无论是移动、旋转还是缩放大小,都是通过在当前矩阵的基础上乘以一个新的矩阵来达到目的。假设当前矩阵为C(即目前栈顶的矩阵,如果之前没有做过变换,栈顶矩阵默认为单位矩阵),旋转变换命令构成的矩阵为R,则发出转换命令后,生成的新的当前矩阵为CR,这个矩阵再乘以顶点坐标v,从而构成新的顶点坐标(CR)v,这样就完成了旋转变换,且当前矩阵变为CR,。如果是连续做多种变换,例如上面的旋转变换之后继续做移动变换T,则生成新的当前矩阵为CRT,用这个总变换矩阵乘以顶点坐标v,得到最终的顶点坐标(CRT)v,由于矩阵乘法的结合率, (CRT)v = (C(R(Tv))),从而看出,程序中绘制顶点前的最后一个变换命令最先作用于顶点之上。这同时也说明,OpenGL编程中,实际的变换顺序与指定的顺序是相反的,即实际上是先进行移动,然后进行旋转。

实体绘制

  在讲变换之前,首先需要知道OpenGL中绘制三维物体的具体函数,以便理解给予的程序实例。OpenGL中的实体绘制函数主要在glut库中(glut是实用工具库,gl是核心库,glu是对gl的部分封装)。以下列出部分常用的实体绘制函数,并给与代码实例:

使用代码实例:

示例图:

网状球体:

示例图:

OpenGl学习之坐标变换(上)(opengl绘制坐标轴)

接下来做变换,改变视图图像。

1、视点变换

  视点,可以用摄影师的观察点来形用,三维物体则看作是被拍摄的人或物,那么视点的变换就是摄影师在寻找拍摄视角。  OpenGL实用库提供了gluLookAt()函数,该函数有三个变量,分别定义了视点的位置、相机瞄准方向的参考点以及相机的向上方向。

视点比做人的&#;睛,当&#;睛看物体时,头朝天时(站立时)看到的物体和头朝地时(倒立时)看到的物体是不一样的.你还可以将头部左右倾斜从不同的角度来看物体.那么,gluLookAt的朝上向量就是用来确定这个方向的.不过在默认情况下,头是朝天的,即朝上向量为(0, 1, 0)。

  这里,头顶的方向和视线的方向用参数来设置不容易理解。

  向上的方向(即头顶方向)一旦确定后,视线的范围就确定了,和人站住不动后,所能看到的角度是有限的一样。

还是用代码实例测试来看效果,我们以茶壶为三维实体。屏幕朝外的方向是Z轴正向。

1>默认状态下,头顶方向:(0,1,0)

效果图:

2>超出视野范围时,看不到物体了3>俯视观察设置

效果图:

2、模型变换

  从“相对移动”的观点来看,改变观察点(即摄影师)的位置与方向和改变物体本身(被拍摄的对象)的位置与方向具有等效性。其实视点本身也算一种模型,也可以调用模型变换函数。

主要有三种模型变换:

(1)模型平移需要注意的是,默认情况下,我们的视点位置在(0,0,1)处(float参数下),所以如果平移的超出视点所能看到的位置,则看不到物体。如glTranslatef(0,0,2):到了视点的后脑勺处,自然看不到物体。

(2)模型旋转

(3)模型缩放

OpenGL super bible(5th) 学习笔记 -- 像素缓冲区对象(PBO) 在存储像素、纹理方面,像素缓冲区对象和纹理缓冲区对象非常相。和所有缓冲区对象一样,它们都存储在GPU内存中,我们可以访问和填充像素缓冲区

Lane-学习OpenGL(1)-七个简单例子 在看了许多实例之后,准备沿着OpenGL编程指南(第七版)学习OpenGL.运行环境:(1)Windows7(2)CodeBlocks(3)GLUT(4)Author:Lane--.黑色背景加白色矩形核心函数:glOrtho.

openGL ES 2.0 3维物体的平移(II) 好了、ok、这两天学习了OpenGLes2.0之中的3D物体的平移、旋转、缩放大小等等,其实吧、个人感觉D3D和OpenGLES2.0就目前学习到的这些知识来讲,还是相差不

标签: opengl绘制坐标轴

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

上一篇:openGL光照(illumination)(opengl光照算法)

下一篇:OpenGL super bible(5th) 学习笔记 -- 像素缓冲区对象(PBO)

  • 小规模纳税人税率2023年是多少
  • 汽车维修费可以计入交通费吗
  • 其他应收款有哪些情况
  • 土地政策补贴
  • 报账员是会计还是出纳
  • 国有资产转让房产
  • 公司收到转账支票怎么盖章
  • 购货无法取得发票财务如何处理
  • 商贸企业销售商品结转成本是手工算吗
  • 销售货物多收款怎么处理
  • 股东贷款是什么意思
  • 食品发票可以抵扣所得税吗
  • 滞留票是什么意思
  • 进项税额转出需要发票吗
  • 苗木销售免企业所得税吗
  • 季度缴纳所得税如何做账
  • 2人注册的公司换一个人怎么办
  • 向分公司拨款如何填现金流量表
  • 为生产产品而领用材料的实际成本应计入什么账户的借方
  • 速动资产不包括存货和预付账款
  • deepin切换系统
  • 推迟月经小窍门有民间土方法吗?
  • 关闭系统自动调屏幕亮度
  • PHP:pg_connection_busy()的用法_PostgreSQL函数
  • python中各种颜色
  • 采用权益法核算
  • web期末大作业源代码
  • 其他综合收益的借贷方向
  • js写数组去重
  • 原材料用于在建工程增值税如何处理
  • 赊购材料尚未支付的款项属于什么科目
  • python opencv如何获取图片尺寸
  • 坏账准备的账务处理例题
  • 可以主营业务成本增加现金减少吗
  • 已开发票作废和空白发票作废有什么不一样?
  • 处置固定资产开发票
  • 折旧的结转
  • 个体工商户要开票吗
  • 应税销售额税率
  • 技术安装工人包食宿
  • 购进运输服务取得的成果
  • 按月缴纳增值税的纳税人申报期限为计算期次月的( )
  • 盘亏的设备要进仓库吗
  • 工程结算编制收费标准
  • 公司销售红酒需要什么资质
  • 净利润率的计算方法公式
  • 外币投资计入什么科目
  • 费用会计处理
  • 实际发放工资的会计处理
  • 小规模纳税人申请一般纳税人流程
  • 公司建账初期做账怎么做
  • 电子记账app下载
  • 公司奖励给部门的奖励
  • 商业健康保险抵扣个税规定
  • java连接mysql数据库教程
  • win8系统打开苹果系统文件
  • XP系统网上邻居不见了有哪些找回方法
  • windowsserver2008r2忘记开机密码怎么办
  • mac怎么自己定制
  • 电脑总是关不了怎么办
  • 奇兔刷机可以救砖吗
  • register.exe - register进程有什么用.是什么意思
  • 菜鸟教程官网app
  • win7怎么截屏幕
  • win8怎样恢复系统
  • 文件夹windows
  • ms-sys
  • jquery 获得焦点
  • nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
  • Node.js中的什么模块是用于处理文件和目录的
  • 查cpu内存命令
  • nodemodules拷贝到其他目录
  • pymysql作用
  • python数据的概念
  • unity androidx
  • 注销税务登记需要哪些材料
  • 贵州省地方税务局税源管理平台(二次)招标合同公告
  • 国地税合并人员瘦身
  • 出售固定资产税收怎么算
  • 办公电话怎么设置铃声
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设