OpenGL中用鼠标交互时,记得按需要把设备坐标系的原点转为左上方的。
用函数:glOrtho2D函数
函数原型为
void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top)
说明:
gluOrtho2D(0,400,0,300),之后在绘制点、线的时候,指定坐标,坐标范围应该为X轴上[0,400],Y轴上[0,300],(不管是X轴还是Y轴,每一个单位用一个像素格表示),而且坐标系的原点是左下方的(0,0),因为left=0,bottom=0

调整方法:

交互时,鼠标的坐标是以窗口左上方的顶点为原点,而不是以左下方的顶点为原点的(这是因为默认设备(屏幕)坐标系是按照左上方为原点的),而我们绘制点或者线条的时候,为了和鼠标的位置配合起来,也要把像素坐标的坐标系原点改为左上方的,可以这样做:
gluOrtho2D(0.0, (GLdouble)w, 0.0,(GLdouble)h)
变为gluOrtho2D(0.0, (GLdouble)w, (GLdouble)h,0.0);
//设置裁剪窗口大小
(当然,w和h可以是确切的正整数)
这样,指定了left=0,right=w(width),bottom=h,top=0,也就是y轴向下生长,相当于间接指定了屏幕设备坐标系以左上方为原点,这样就可以与当前鼠标的位置很好地对应起来了,不然会发生手点的鼠标位置与实际在屏幕上显示的点或者线关于窗口中间的水平线轴对称的看起来很怪异的情况。

百科:

glOrtho ()

这个函数描述了一个平行修剪空间。这种投影意味着离观察者较远的对象看上去不会变小(与透视投影相反)。在3D笛卡尔坐标中想象这个修剪空间,左边和右边是最小和最大的X值,下边和上边是最小和最大的Y值,近处和远处是最小和最大的Z值。 正射投影,又叫平行投影。这种投影的视景体是一个矩形的平行管道,也就是一个长方体。正射投影的最大一个特点是无论物体距离相机多远,投影后的物体大小尺寸不变。这种投影通常用在建筑蓝图绘制和计算机辅助设计等方面,这些行业要求投影后的物体尺寸及相互间的角度不变,以便施工或制造时物体比例大小正确。

OpenGL中把设备坐标系(屏幕)的原点转为左上方的调整方法(使用glOrtho2D函数,合理设置参数)相关推荐

  1. C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用...

    这几天一直在复习C#基础知识,过程中也发现了自己以前理解不清楚和混淆的概念.现在给大家分享出来我的笔记: 一,.NET平台的重要组成部分都是有哪些 1)FCL (所谓的.NET框架类库) 这些类是微软 ...

  2. Word中论文参考文献英文字符间距太大,调整方法。

    问题 Word中论文参考文献英文间距太大,如下图,如何调整? 方法 word或者wps:段落--换行和分页--允许西文在单词中间换行 结果如下: 对于换行后的单词可以在前面直接加小横线.

  3. OpenGL三维空间中视距与屏幕像素换算公式

    DEBC为视锥裁剪体,DE是视锥体近裁剪面(OpenGL中也就是屏幕所在平面),BC是视锥体远裁剪面,FG是位于视锥体内的某一物体,相机视角fov为角BAC,则有Fj表示物体FG的包围球半径radiu ...

  4. (zt)OpenGL中的Alpha测试,深度测试,模板测试,裁减测试

    转自http://www.cppblog.com/flashboy/archive/2009/09/01/94974.html 大家好.现在因为参加工作的关系,又是长时间没有更新.趁着国庆的空闲,总算 ...

  5. ros 机械臂复位_松下机械手原点调整方法

    大家好,我是头条@电气电子技术,欢迎大家的关注和浏览! 松下焊接机械手是工业生产常见的机械设备.很多维修人员只懂得修正位置或者做个简单的编程,而不会复位机械原点. 复位机械原点,即TCP调整方法,很重 ...

  6. 【数据库】sqlite中的限制:数据库大小、表数、列数、行数、参数个数、连接数等

    目录 一.参考网址 二.详解 1.查看.设置sqlite限制命令.limit 2.SQLite中的限制汇总 1)字符串或BLOB的最大长度 2)最大列数 3)SQL语句的最大长度 4)联接中的最大表数 ...

  7. C# WebAPI中DateTime类型字段在使用微软自带的方法转json格式后默认含T的解决办法...

    C# WebAPI中DateTime类型字段在使用微软自带的方法转json格式后默认含T的解决办法 原文:C# WebAPI中DateTime类型字段在使用微软自带的方法转json格式后默认含T的解决 ...

  8. Python中记住过去(模型状态)的五种方法

    在Python中记住过去(模型状态)的五种方法 从封闭函数和迭代器到状态机Python库 有人说... "那些不能记住过去的人,注定要重复它".G. Santayana, 1905 ...

  9. OpenGL中关于坐标系原点在左上角还是左下角的一些整理

    各轴之间的顺序要求符合右手法则,即以右手握住Z轴,让右手的四指从X轴的正向以90度的直角转向Y轴的正向,这时大拇指所指的方向就是Z轴的正向.这样的三个坐标轴构成的坐标系称为右手空间直角坐标系.与之相对 ...

最新文章

  1. 技术图文:举例详解Python中 split() 函数的使用方法
  2. 【 MATLAB 】MATLAB 实现模拟信号采样后的重建(一)
  3. tcp/udp socket编程异同
  4. arn linux编译系统时错误的解决
  5. SqlServer优化:当数据量查询不是特别多,但数据库服务器的CPU资源一直100%时,如何优化?...
  6. val_loss突然变很大_女朋友突然变得很冷淡是怎么回事?该怎么办
  7. 探索HTTP传输中gzip压缩的秘密
  8. ICCV2021 | 简单有效的长尾视觉识别新方案:蒸馏自监督(SSD)
  9. Linux下安装python27
  10. python手写计算器
  11. Rayman的绝顶之路——Leetcode每日一题打卡7
  12. Unity射线检测指定Layer的物体
  13. php删除文件还能修复吗,删除文件恢复
  14. Selenium WebDriver 常用API
  15. 解决Bug:windows无法休眠/休眠只关闭屏幕
  16. Boggle问题积累
  17. 记录Linux下安装elasticSearch时遇到的一些错误
  18. 转 新入职程序员心得
  19. LeetCode高频题:《逆水寒》在地图的制作中,美术在地图上刷一片连通区域,连通区域自动填充,请你判断给定几个点位置,他们是否属于被刷区域
  20. IOS 通过麦克风检测声音分贝

热门文章

  1. 【PTA】验证回文串和判断双对称方阵
  2. java随机数生成函数
  3. 基于JavaWeb的食品团购网的设计与实现
  4. C语言的数据类型及用%u输出char的问题
  5. opencv图像处理-图像平滑
  6. springboot项目Oracle主键自增
  7. 连接两个字符串(c语言)
  8. android QMI机制---概论
  9. 大数据系列(3)-HDFS 常用命令
  10. 【多模态】《GATED MULTIMODAL UNITS FOR INFORMATION FUSION》论文阅读笔记