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. Linux中source是什么指令?

    命令用法: source FileName 作用:在当前bash环境下读取并执行FileName中的命令. 注:该命令通常用命令“.”来替代. 如:source /etc/profile 与 .  / ...

  2. 再谈select, iocp, epoll,kqueue及各种I/O复用机制

    原文:http://blog.csdn.net/shallwake/article/details/5265287 首先,介绍几种常见的I/O模型及其区别,如下: blocking I/O nonbl ...

  3. COM中的REFIID小解【转】

    是在浏览器项目中的IDispatch调用QueryInterface( [in]   REFIID riid,  [out]  void **ppvObject); 认识的REFIID,由于看声明说r ...

  4. BZOJ1861——book

    就是给你一摞书,然后又询问第k大,编号为x的书是第几大,然后修改书的位置 splay模板题...然而我还是不会,,,又遇到lrj的书的坑了,rj的书里没有father,顿时弄得我ask不会搞了 注意合 ...

  5. [POJ1068]Parencodings

    [POJ1068]Parencodings 试题描述 Let S = s1 s2...s2n be a well-formed string of parentheses. S can be enco ...

  6. Android中的四种动画(一)

    TweenAnimation 变换动画(也叫作"补间动画"),有四种(alpha scale translate rote). FrameAnimation(也叫DrawableA ...

  7. Kali Linux渗透基础知识整理(一):信息搜集

    写在前面的废话:最近要给一些新人做培训,整理些东西,算不上什么太高端的内容,只是简单的整理下了,我觉得对于小白的话也还算是干货.在乌云水了几年,算不上什么大神水平,最近生活费紧张,现在打算在FreeB ...

  8. Octopress博客使用

    在C:\DevKit\octopress目录下 执行如下指令 rake preview 打开浏览器 http://localhost:4000/ 重新生成 rake generate 部署 rake ...

  9. idea 排除编译文件,恢复编译

  10. 【微服务】SpringBoot、SpringCloud相关

    深入学习微框架:Spring Boot:   http://www.infoq.com/cn/articles/microframeworks1-spring-boot/ Spring Boot--2 ...