位置: 编程技术 - 正文

OpenGL 之 坐标变换(opengl绘制坐标轴)

编辑:rootadmin

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

文章相关热门搜索词:opengl坐标与窗口坐标,opengles坐标系,opengl如何设置坐标原点,opengl坐标与窗口坐标,opengl坐标变换,opengl坐标变换,opengl绘制坐标轴,opengl坐标变换,内容如对您有帮助,希望把文章链接给更多的朋友!

创建OpenGL模型过程:

OPENGL坐标变换很有特点,为了简单描述先定义2个坐标系:(1)世界坐标系:无论如何变换,世界坐标系都不动,以屏幕中心为原点(0, 0, 0),你面对屏幕,你的右边是x正轴,上面是y正轴,屏幕指向你的为z正轴。(2)当前绘图坐标系(即局部坐标系):当前绘图坐标系是绘制物体时的坐标系。程序刚初始化时,世界坐标系和当前绘图坐标系是重合的,当用glTranslatef()等变换函数做移动和旋转时,都是改变的当前绘图坐标系,改变的位置都是当前绘图坐标系相对自己的x,y,z轴所做的改变,改变以后,再绘图时,都是在当前绘图坐标系进行绘图,所有的函数参数也都是相对当前绘图坐标系来讲的。glLoadIdentity():令当前绘图坐标系重新回到世界坐标系的位置,令他们重合。glTranslatef(x,y,z):使绘图坐标系相对世界坐标系沿x,y,z轴移动x,y,z个单位

其他关键概念:

(1)裁剪区域

占据窗口的的笛卡尔空间区域,只有在裁剪区域内的物体才可见。void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far)注:在使用glOrtho之前,要先调用一下两个函数 glMatrixMode(GL_PROJECTION); glLoadIdentity();

(2)视口裁剪区域的宽度和高度很少能够正好与窗口的宽度和高度(以像素为单位)相匹配,因此,坐标系必须从逻辑笛卡尔坐标映射到物理屏幕坐标,这个映射是通过视口的设置来指定的。视口就是窗口内部用于绘制裁剪区域的客户区域。

OpenGL 之 坐标变换(opengl绘制坐标轴)

void glViewport(GLint x,GLint y,GLsizei width,GLsizei height)x,y参数指定了窗口内部视口的左下角。通常,x,y都是0。视口以实际屏幕坐标定义了窗口中的区域。 (3)屏幕坐标Windows屏幕坐标以左上角为原点, X轴正方向朝右, Y轴正方向朝下. Windows屏幕坐标和虚拟3D世界坐标不是简单映射的, 这个过程很复杂.我们只有将鼠标的热点的坐标通过Windows坐标到3D pipeline的屏幕坐标及3D pipeline的逆转换后, 才能得到在3D世界的对应点, 最后确定这个点是否有物体, 这就是Picking.

当窗口大小发生改变时,需要对裁剪区域进行同步的修改,一确保图像不会发生变形。 glOrtho(-.0,.0,-.0/aspectRatio,.0/aspectRatio,1.0,-1.0);

else glOrtho(-.0*aspectRatio,.0*aspectRatio,-.0,.0,1.0,-1.0);

有的时候,我们在绘画图形是,当点坐标超过1.0时变无法出图,原因就是没有设置好裁剪区域

1,世界窗口到视口的变换

世界窗口顾名思义就是我们的真实三维世界。而视口就是我们OpenGL程序的窗口,我们通过程序的窗口去观察世界需要一个映射,下图很形象的表明了 世界窗口和视口的关系。

上图中有边界的就是视口,后面很大的就是世界窗口。

在OpenGL中对于2D情况,世界窗口由函数gluOrtho2D()设定,视口由函数glViewport()设定。gluOrtho2D函数原型:void gluOrtho2D(Gldouble left, Gldouble right, Gldouble bottom, Gldouble top);

left:世界坐标的最左边,right,bottom,top类&#;。当然这个可以任意的,比如你想观察x>0 和 y>0的区域,你可以设置gluOrtho2D(0,,0,)。当然你也可以颠倒窗口gluOrtho2D(0,,,0)。这个和上一个关于X对称。glViewport函数的原型:void glViewport(Glint x, Glint y, Glint width, Glint, height);这里各参数的含义很显然的,窗口左下角(left,bottom),右上角(right,top)。下面的视口的左下角(x,y),右上角(x&#;width,y&#;height)。设置绘图区位于打开窗口的位置。这里默认左下角的坐标为(0,0)。窗口和视口有一个比例因子,这就好像一张尺寸小的图片被用来作为电脑屏幕时要铺满一样,如果gluOrtho2D大小 < glViewport的话则原图被比例的放大一样。反之则会变小,总之最终都会适应视口。因为视口最终显示出来。

OpenGL红宝书学习笔记(1) OpenGL对场景中的图像进行渲染时所执行的主要操作:1.根据几何图元创建形状,从而建立物体的数学描述,(OpenGL把点,直线,多边形和位图作为基本的

OpenGL学习之材质RGB值和光源RGB值关系 材质的颜色与光源的颜色有些不同。对于光源,R、G、B等于R、G、B对其最大强度的百分比。若光源颜色的R、G、B都是1.0,则是最强的白光;若变为0.5,

C#+OpenGL3编程之第一个红色三角形(Shade) 本文基础:C#OpenGL3编程之第一个三角形教程原文地址:

标签: opengl绘制坐标轴

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

上一篇:glViewport(glviewport超出屏幕范围)

下一篇:OpenGL红宝书学习笔记(1)(红宝书csv)

  • 增值税加计抵减怎么做账
  • 去年多计提的工资今年直接冲掉当期费用,不调增可以吗
  • 停车费增值税税率
  • 铜川缴纳房屋契税怎么算
  • 应交税费和应交增值税
  • 分摊房屋租赁费计入什么科目
  • 公司工会的主要职能是
  • 用友怎么设置工龄工资
  • 增值税如何减税
  • 如何规范填写费用表格
  • 作为一个财务 月末要做什么
  • 营改增无形资产
  • 一次性离职补偿金如何避税
  • 购入固定资产挂帐记其他应付款还是应付账款
  • 管理不善存货损失 企业所得税
  • 农产品增值税核定扣除管理建议
  • 活动策划费开票在哪个项目下面
  • 一般纳税人购买原材料会计分录
  • 在windows7环境中鼠标主要的三种操作方式是
  • 完成交易预付账怎么做账
  • 分配利润给股东怎么做分录
  • 期末调汇凭证怎么调
  • 开发票时的数据可以四舍五入吗
  • 人力资源劳务外包合同
  • 在win10中怎么从edge旧ie浏览器
  • 未开票收入申报后又要开票
  • win11笔记本如何让电池充电到100%
  • php字符串函数有哪些
  • 支持h5浏览器
  • 企业与政府所签的合同
  • 购买性支出和转移性支出的区别可以归纳为()
  • 超出经营范围开票怎么处理
  • 生产企业出口货物增值税如何申报
  • 工业企业采购供应管理
  • 长期股权投资成本法收回投资
  • 在收付实现制下,预付的下季度报刊杂志订阅费
  • macos安装多版macos并存
  • arc架构
  • python该怎么用
  • 增值税纳税申报实训心得体会
  • 蔬菜开票税率是多少
  • 公司汽车转卖给个人税率
  • oracle sql 不等于某个字符
  • 业委会究竟在小区起什么作用
  • 土地使用权转让法律规定
  • 股息所得缴纳个税吗
  • 个人独资企业个税怎么交
  • 应收账款计提减值准备会计处理
  • 来料加工账务处理案例
  • 一张凭证上可以写多个摘要吗
  • 怎么查对方是一般还是小规模
  • 个税和社保有什么区别
  • 劳务公司的劳务税是多少
  • 开票信息指的是买方还是卖方
  • 工程类发票账务后面需附什么单据呢
  • 商业企业注销应检查哪方面的问题
  • mysql类型varchar长度
  • MySQL PXC构建一个新节点只需IST传输的方法(推荐)
  • navicate创建存储过程
  • mac虚拟机安装教程win10正版
  • linux怎样浏览文件中的内容
  • Windows移动中心里没有无线网络
  • ubuntu命令行查找文件
  • noads.exe - noads是什么进程 有什么用
  • linux系统怎么增大磁盘io
  • redhat linux 7.2系统安装详细过程
  • 您的服务器不支持此服务
  • win8鼠标右键无法弹出菜单
  • 红石cpu教程
  • [置顶]游戏名:chivalry2
  • kotlin开发安卓教程
  • nodejs开发gui
  • vue的自定义组件
  • js判断函数
  • js md5加密方法
  • 如何彻底删除android
  • 如何查询税务是否变更
  • 如何查询税控盘是否注销成功
  • 支付税控服务费的账务处理
  • 有限公司怎么交五险
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设