2019独角兽企业重金招聘Python工程师标准>>>

坐标系:

1、右手坐标系

2、左手坐标系

左手坐标系是X轴向右,Y轴向上,Z轴向前,右手坐标系的Z轴正好相反,是指向“自己”的,在计算机中通常使用的是左手坐标系,而数学中则通常使用右手坐标系。计算机里面其实很多也有用右手坐标系,这个只是根据实际应用不同,没有说哪个比较好

世界坐标是OpenGL中用来描述场景的坐标,Z+轴垂直屏幕向外,X+从左到右,Y+轴从下到上,是右手笛卡尔坐标系统。我们用这个坐标系来描述物体及光源的位置。将物体放到场景中也就是将物体平移到特定位置、旋转一定角度,这些操作就是坐标变换。OpenGL中提供了glTranslate*/glRotate*/glScale*三条坐标变换命令,利用OpenGL的矩阵运算命令,则可以实现任意复杂的坐标变换。

物体坐标是以物体某一点为原点而建立的“世界坐标”,该坐标系仅对该物体适用,用来简化对物体各部分坐标的描述。物体放到场景中时,各部分经历的坐标变换相同,相对位置不变,所以可视为一个整体,与人类的思维习惯一致。

眼坐标是以视点为原点,以视线的方向为Z+轴正方向的坐标系中的方向。OpenGL管道会将世界坐标先变换到眼坐标,然后进行裁剪,只有在视线范围(视见体)之内的场景才会进入下一阶段的计算。同样的,有投影变换矩阵栈(Projection),栈顶矩阵就是当前投影变换矩阵,负责将场景各坐标变换到眼坐标,由所得到的结果是裁剪后的场景部分,称为裁剪坐标。前面提到过的视见体设定其实就是在建立该矩阵。

设备坐标:OpenGL 的重要功能之一就是将三维的世界坐标经过变换、投影等计算,最终算出它在显示设备上对应的位置,这个位置就称为设备坐标。在屏幕、打印机等设备上的坐标是二维坐标。值得一提的是,OpenGL可以只使用设备的一部分进行绘制,这个部分称为视区或视口(viewport)。投影得到的是视区内的坐标(投影坐标),从投影坐标到设备坐标的计算过程就是设备变换了。

矩阵可以和坐标相结合

1.

2.

实际应用:

平移变换

若空间平移量为(tx, ty, tz),则平移变换为

则变换矩阵为

即:x' = 1x+0y+0z+tx,

y' = 0x+1y+0z+ty,

z' = 0x+0y+1z+tz,

1' = 0x+0y+0z+1

同样的效果也可以:

x' = x+tx; y'=y+ty;

向量的点乘和叉乘

点乘:

叉乘:

a、b分别为三维向量:

1、向量叉乘的计算原理

这里用i j k来表示三维坐标轴,这里只是举例,可以扩展到更多维,只是比较抽象

   

   

                        

                       

                

2、计算叉乘矩阵

把叉乘结果写成向量的形式:

变换形式得到叉乘矩阵:

其中称为a向量的叉乘矩阵。

转载于:https://my.oschina.net/HeroOneHY/blog/1571154

opengl矩阵变换与平移缩放旋转相关推荐

  1. [Python从零到壹] 三十八.图像处理基础篇之图像几何变换(平移缩放旋转)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  2. qgraphicsview鼠标移动图片_交互式QGraphicsView(平移/缩放/旋转)-阿里云开发者社区...

    简述 Graphics View提供了一个平台用于大量自定义 2D 图元的管理与交互框架包括一个事件传播架构支持场景 Scene 中的图元 Item 进行精确的双精度交互功能.Item 可以处理键盘事 ...

  3. 关于在Opengl中先平移后旋转和先旋转后平移的效果不一样的原因

    一.现象 在OpenGL中先移动后旋转与先旋转后移动的最终效果是并不一定相同的,也就是说在Opengl中如果调用函数glTranslatef和函数glRotatef的次序不同,即使参数一样,效果也可能 ...

  4. 线性代数:矩阵变换图形(三维平移缩放旋转)

    紧接上一篇:http://blog.csdn.net/yinhun2012/article/details/79544205 这篇博文我只是准备对上一篇博文的内容进行扩展,因为上一篇我写完二维xy仿射 ...

  5. C++-矩阵运算-Eigen-几何矩阵变换-常见几何参数求解-平移-缩放-旋转-仿射变换-垂足-面积-周长-方向角-按目标点和距离移动当前点

    文章目录 1.矩阵运算规律 1.1.矩阵相乘结合律 1.2.矩阵相乘交换律 1.3.矩阵转置 1.4.矩阵的逆 2.仿射变换 2.1.平移变换 Translation 2.2.缩放变换 Scale 2 ...

  6. C语言数字图像处理---1.5图像基本变换之平移缩放旋转

    本篇作为新年到来前的最后一篇,提前祝大家新年快乐! 图像几何变换又叫做图像基本变换,主要包括图像平移.图像缩放和图像旋转几个部分,当然还有图像镜像等简单的内容.图像基本变换是图像处理的基本内容,是学习 ...

  7. iOS图片添加平移/缩放/旋转多个手势

    // // UIImageView+Utils.h // OpenWorkr // // Created by 冰凉的枷锁 on 2017/3/6. // Copyright © 2017年 Eden ...

  8. 变换矩阵_平移 缩放 旋转及统一变换

    1. 位移(translation) 对于一个三维坐标(x, y, z),我们想让它往x轴正方向移动1个单位,往y轴正方向移动1个单位,往z轴正方向移动1个单位,则可以让它加上一个向量(1, 1, 1 ...

  9. [Python图像处理] 三十六.OpenCV图像几何变换万字详解(平移缩放旋转、镜像仿射透视)

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

最新文章

  1. linux 自学系列: 常用文件结构
  2. linux查看内核版本、系统版本、系统位数(32/64)
  3. 斐波那契数列递归解法
  4. [JAVA基础类库] String类 ○ StringBuffer类 ○ StringBuilder类
  5. httpclient 设置短连接_HTTP长连接、短连接使用及测试
  6. (十三)其他设计模式
  7. PHP笔记-连接MySQL数据库及查询数据
  8. 互联网共享图书馆+自习室商业计划书
  9. 按键精灵一个命令学会这么厉害
  10. echarts 生成 迁徙图_echarts迁徙图
  11. 华为推送:应用中的百度地图jar包和华为Push SDK中的百度地图相冲突
  12. 服务器xp系统网页打不开网页,ie浏览器打不开网页,xp系统ie打不开网页-
  13. 用Python批量修改图片名称及后缀名
  14. 金蝶K3开发-工业单据显示物料图片
  15. html页面打印+区域,实现web网页指定区域打印的三种方法
  16. QNAP威联通NAS搭建SFTP服务,并内网穿透实现公网远程访问
  17. 无法安装冰点还原_PC整机备份与还原教程 Active Backup for Business
  18. 电气器件系列二十八:漏电断路器开关(面板参数)
  19. (二)微服务保护——限流规则
  20. php获取设备串号,检测手机串号 js, php

热门文章

  1. 使用python标准库urllib2访问网页
  2. 深入浅出JavaScript (五) 详解Document.write()方法
  3. 保护 ASP.NET 应用程序的安全
  4. 仅让演讲者看到备注信息
  5. Slack 决定不修复可暴露用户身份的 XSLeak漏洞
  6. 一年三番五次修,卡巴斯基为何依然无法完美修复杀毒软件中的这些洞 (技术详情)?...
  7. less+rem迭代适配
  8. pthreads v3下一些坑和需要注意的地方
  9. Java Swing中键盘事件的处理
  10. MyBatis 实现关联表查询