计算机仿真技术(3)

用堆栈来管理矩阵

·glLoadIdentity();------使栈顶矩阵为单位矩阵

·glPushMatrix(); -------将栈顶矩阵复制一份,入栈

·glPopMatrix();   -------退栈

矩阵的组合变换

                          

 

几何变换

  1. 模型变换--Model transformation
  2. 视点变换--View transformation

glMatrixMode(GL_MODELVIEW)---不论什么,都看做模型变换

Void gluLookAt(eyex,eyey,eyez,centryx,centryy,centryz,upx,upy,upz)

                          视点位置            视点聚焦的位置           物体头部朝向

全局变换与局部变换

  1. 只有一次变换(旋转、平移、缩放),则全局与局部变换效果一样
  2. 多个变换组合,效果一般不同
  3. 局部变换=  -(全局变换的组合顺序)~~~OpenGL 中变换语句顺序与实际矩阵相乘实现相反

投影

Perspective projection(透视投影)

Parallel projection(平行投影)

投影变化:给定视点、视线方向,计算出当前顶点的投影点坐标

 

 

 

·投影变换也是用矩阵来实现的

·专门管理投影矩阵的堆栈:glMatrixMode(GL_PROJECTION);

视口变换------图像变形

Void glViewport(GLint x,GLinty,GLsizei width,GLsizei height);

设置当前窗口中的视口区域

参数中的值以屏幕像素为单位

投影函数(如gluPerspective())定义了投影窗口的大小比例;

glViewport()定义了视口的大小比例

glViewport(0,0,w,h);

gluPerspective(60.0,(GLfloat)w/(GLfloat)h,1.0,30.0);

设置第2个参数为w/h的目的:保持投影窗口与视口的比例一致,使其不变形

三维几何空间中的坐标系与单位

坐标系:

OpenGL的默认坐标系和默认视点位置 ·手坐标系

·默认视点在原点

·视线方向是z轴方向

单位:

三维空间(视锥体空间)中的单位:无绝对单位,有相对大小

设定物体大小以什么为依据:视锥体

是否需要根据视口大小来设定物体大小?

Void glViewport(GLint x,GLinty,GLsizei width,GLsizei height);

glViewport()参数中的值都是以屏幕像素为单位的

二者单位不同,视口大小只与视锥体窗口有比例的关系无绝对大小关系

物体大小与视口无关,需根据视锥体大小来设定物体大小-----物体大小与其在视口中所占面积大小无关

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值