void gluLookAt( GLdouble eyeX,

    GLdouble eyeY,

    GLdouble eyeZ,

    GLdouble centerX,

     GLdouble centerY,

    GLdouble centerZ,

    GLdouble upX,

    GLdouble upY,

     GLdouble upZ);

中eye和center是用来确定看的方向,也就是说即使物体不落在eye和center这两点的范围内,也可以看到。

因为用来确定范围的是另一个函数glOrtho,它的参数

void glOrtho(  GLdouble        left,

GLdouble        right,

GLdouble        bottom,

GLdouble        top,

GLdouble        nearVal,

GLdouble        farVal);

如果物体不落在这个范围内,那就会看不到。只看得到落在范围内的那一部分。

因此glOrtho的参数可以通过物体的boundingbox来确定。他的left right bottom top near far是通过gluLookAt的eye 和center来确定,就是我看的方向然后上下左右前后 (mark:与坐标x,y,z是代表长宽高不是直接等价的)。

PS: near必须离眼睛比较近,far必须离眼睛远。比如根据z来确定,那么near的z必须和eye的z 值更相近。

//是相对于gluLookAt中eye的位置,znear是靠近eye的,eye是从正向向负向看center
//znear与eye.z要比zfar与eye.z更近
//有的building没有floor,如果znear和zfar包括的范围没有包裹整个building,那么从逆向向正向看,只有boundary
//从正向向逆向看,就是fill mode,但是如果范围足够大,就不用担心这个问题。
//这里也不会导致空白很大,图小

参加getFootprint()函数.

e.g.,

double x,z;
x = pLoadModels->g_3DModel->boundBox.max.x - pLoadModels->g_3DModel->boundBox.min.x;
z = pLoadModels->g_3DModel->boundBox.max.z - pLoadModels->g_3DModel->boundBox.min.z;
double normRadius = max(x,z) * 1.1; // correspond to model's extend 1.1 倍 circumcircle

范围最好是比原来的扩大1.1,这样不管多大或者多小的模型,都能自动fit into viewport,就不会有的图很大很小或者看不到要手动调整。

!gluLookAt与glOrtho 参数解析的更多相关文章

  1. 写个C#命令行参数解析的小工具

    最近测试工作做的比较多因此时常要创建一些控制台类型的应用程序.因为程序有不同的参数开关,需要在程序启动的时候通过命令行来给程序传递各种开关和参数.直接操作args有些不方便,所以就写了个解析参数的小工 ...

  2. Python--命令行参数解析Demo

    写没有操作界面的程序时,最讨厌的就是参数解析问题,尤其是很多参数那种,下面是一个小Demo,拿出来与各位分享: # -*- coding:utf8 -*- import os import datet ...

  3. Node基础:url查询参数解析之querystring

    模块概述 在nodejs中,提供了querystring这个模块,用来做url查询参数的解析,使用非常简单. 模块总共有四个方法,绝大部分时,我们只会用到 .parse(). .stringify() ...

  4. OpenGL的gluLookAt和glOrtho的关系

    OpenGL的gluLookAt和glOrtho的关系 一直不明白gluLookAt()和glOrtho()两者之间的关系:gluLookAt()是观察变换,glOrtho()是正交投影.glLook ...

  5. Zookeeper + Hadoop2.6 集群HA + spark1.6完整搭建与所有参数解析

    废话就不多说了,直接开始啦~ 安装环境变量: 使用linx下的解压软件,解压找到里面的install 或者 ls 运行这个进行安装 yum install gcc yum install gcc-c+ ...

  6. argparse - 命令行选项与参数解析(转)

    argparse - 命令行选项与参数解析(译)Mar 30, 2013 原文:argparse – Command line option and argument parsing 译者:young ...

  7. 一步一步自定义SpringMVC参数解析器

    随心所欲,自定义参数解析器绑定数据. 题图:from Zoommy 干货 SpringMVC解析器用于解析request请求参数并绑定数据到Controller的入参上. 自定义一个参数解析器需要实现 ...

  8. /proc/sys/ 下内核参数解析

    http://blog.itpub.net/15480802/viewspace-753819/ http://blog.itpub.net/15480802/viewspace-753757/ ht ...

  9. ThreadPoolExecutor参数解析

    ThreadPoolExecutor是一个非常重要的类,用来构建带有线程池的任务执行器,通过配置不同的参数来构造具有不同规格线程池的任务执行器. 写在前面的是: 线程池和任务执行器,线程池的定义比较直 ...

随机推荐

  1. CentOS-6.5安装zabbix2.4.4

    使用epel源  (检查网络连接是否正常)   //这里使用epel源 [root@localhost /]# wget -O /etc/yum.repos.d/CentOS-Base.repo ht ...

  2. Lua模块测试

    Lua模块 ---------------------------------------------------------- ----------------------- 模块测试module_ ...

  3. CDN技术发展趋势

    智能化 存储智能化 关键技术点:文件分片热度的判断策略,跨节点快速文件调度 存储向以文件切片为基础的全网共享存储发展:把一个整片切成n个小块,按用户访问热度分散存储在不同节点.当用户访问的时候,由边缘 ...

  4. Effective Java 读书笔记之二 对于所有对象都通用的方法

    尽管Object是一个具体的类,但设计它主要是为了扩展.它的所有非final方法都有明确的通用约定.任何一个类在override时,必须遵守这些通用约定. 一.覆盖equals时请遵守通用的约定 1. ...

  5. iOS开发——UI进阶篇(十六)Quartz2D实战小例子

    一.画线 只有在drawRect中才能获取到跟view相关联的上下文 - (void)drawRect:(CGRect)rect {} 一条线 // 1.获取跟当前View相关联的layer上下文(画 ...

  6. BZOJ1251——序列终结者

    给你一个数列,让你实现区间加上一个值,区间翻转,区间最大值 裸splay,懒标记一发即可 #include <cstdio> #include <cstdlib> #inclu ...

  7. css3常用标签

    30个最常用css选择器解析   你也许已经掌握了id.class.后台选择器这些基本的css选择器.但这远远不是css的全部.下面向大家系统的解析css中30个最常用的选择器,包括我们最头痛的浏览器 ...

  8. codemirror和ace editor的语法高亮

    两个javascript库用做在线代码编辑器都是非常优秀的选择 我这两天对这两个类库做了简单的研究,重点是语法高亮的自定义: ace editor的主要思路是生成状态机,从一个startstate开始 ...

  9. C++ 复制构造函数

    C++类的设计中,如果某些函数没有显式定义,C++会自动生成,复制构造函数便是其中之一,其他的还有默认构造函数.赋值操作符.默认析构函数.地址操作符.一个类的复制构造函数的原型一般为: Class_n ...

  10. ios10 UNNtificationRequest UNUserNotificationCenter的应用 推送之本地推送

    iOS10 已经 "deprected" 我们的UILocalNotification 采用了全新的UNUserNotificationCenter; 1 首先,你需要引进< ...