• gluPerspective(解释得很好)


    http://www.cppblog.com/COOOOOOOOL/archive/2009/12/28/104255.html

    函数原型
    gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

    首先得设置gluPerspective,来看看它的参数都表示什么意思
    fovy,这个最难理解,我的理解是,眼睛睁开的角度,即,视角的大小,如果设置为0,相当你闭上眼睛了,所以什么也看不到,如果为180,那么可以认为你的视界很广阔,
    aspect,这个好理解,就是实际窗口的纵横比,即x/y
    zNear,这个呢,表示你近处,的裁面,
    zFar表示远处的裁面,

    如果还没有理解就继续看,
    我们知道,远处的东西看起来要小一些,近处的东西看起来会大一些,这就是透视原理
    如下图所示





    假设那两条线表示公路,理论上讲,它们的两条边是平行的,
    但现实情况中,它们在远方(可以无限远)总要相交于一点,
    实际线段AB的长度=CD的长度,只是在此例中使用了透视角,故会有如上的效果,是不是很接近现实的情况?

    结合我们刚才这两个函数
    zNear,眼睛距离近处的距离,假设为10米远,请不要设置为负值,OpenGl就傻了,不知道怎么算了,
    zFar表示远处的裁面,假设为1000米远,
    就是这两个参数的意义了,

    再解释下那个"眼睛睁开的角度"是什么意思,
    首先假设我们现在距离物体有50个单位距离远的位置,
    在眼睛睁开角度设置为45时,请看大屏幕:




    我们可以看到,在远处一个球,,很好玩哈,
    现在我们将眼睛再张开点看,将"眼睛睁开的角度"设置为178
    (180度表示平角,那时候我们将什么也看不到,眼睛睁太大了,眼大无神)



    我们只看到一个点,,,,,,,,,,,,,,,,,,,,,,,,,,,
    因为我们看的范围太大了,这个球本身大小没有改变,但是它在我们的"视界"内太小了,


    反之,我们将眼睛闭小些,改为1度看看会出现什么情况呢?



    在我们距离该物体3000距离远,"眼睛睁开的角度"为1时,我们似乎走进了这个球内,这个是不是类似于相机的焦距?

    当我们将"透视角"设置为0时,我们相当于闭上双眼,这个世界清静了,

    我们什么也看不到,,,,,,,,,
    posted on 2009-12-28 10:26 COOOOOOOOL 阅读(15870) 评论(10)  编辑 收藏 引用

    Feedback

  • 相关阅读:
    类中代码执行顺序 及 组合
    初识面向对象
    内置函数及匿名函数 补充
    生成器 补充
    再回首 基本数据类型和 if语句
    day 023-python 包
    day022 python (re模块和 模块)
    day021python 正则表达式
    day 020 常用模块02
    android studio 菜鸟实战项目 之 点击事件以及动态添加
  • 原文地址:https://www.cnblogs.com/xuejinhui/p/4371651.html
Copyright © 2020-2023  润新知