CS184.1X 计算机图形学导论(第四讲)
一、齐次变换
1、平移变换
变换矩阵不能包含X,Y,Z等坐标变量
如果x坐标向右平移了5个单位长度,则x~=x+5。在变换矩阵中表示的时候添加一个w坐标变量。通过加入一个w坐标,可以实现平移变换
1>如果w>0,这表示一个真实物理世界的点,因为你可以用x,y,z三个坐标初一w得到这个真是的点。
2>如果w=0,表示一个无穷远处的点
3>在实际应用中,w等于0通常用来表示一个向量
齐次坐标的优点:只需在渲染管线的最后做一次 除法(除以w)就能将齐次坐标转换为非齐次。
一般的平移矩阵:
可以简写为2*2的矩阵,左上角是一个3*3的单位矩阵,T和0是向量,1是数值。
旋转总是相对于原点!!先做旋转再做平移,因为矩阵乘法是不可交换的
2、齐次坐标
齐次坐标的形式:简而言之,齐次坐标就是用N+1维来代表N维坐标
齐次坐标在电脑图形内无处不在,因为该坐标允许平移、旋转、缩放及透视投影等可表示为矩阵与向量相乘的一般向量运算。
我们可以在一个2D笛卡尔坐标末尾加上一个额外的变量w来形成2D齐次坐标,因此,一个点(X,Y)在齐次坐标里面变成了(x,y,w),并且有
X = x/w
Y = y/w
我们把齐次坐标转化为笛卡尔坐标的方法是前面n-1个坐标分量分别除以最后一个分量即可。
例如,笛卡尔坐标系下(1,2)的齐次坐标可以表示为(1,2,1),如果点(1,2)移动到无限远处,在笛卡尔坐标下它变为(∞,∞),然后它的齐次坐标表示为(1,2,0),因为(1/0, 2/0) = (∞,∞),我们可以不用”∞"来表示一个无穷远处的点了
3、旋转变换
先平移再旋转的结果:
先旋转再平移的结果:
例题:
解:因为所变换的向量在后边,所以j是先平移再旋转,k是先旋转再平移,利用平移公式与旋转公式得出结果。
二、法向变换
这个公式要施加到曲面上所有的法向上,产生法向变换
例题:
解:
与M相关的法向变换Q=(M^−1)^T。
对于这里的旋转矩阵 R(a⃗ ,θ), 逆矩阵等于绕着相同的旋转轴旋转 −θ:
R(a⃗ ,θ)^−1=R(a⃗ ,−θ)
对这个矩阵转置产生相似的结果:R(a⃗ ,θ)^T=R(a⃗ ,−θ)
(R(a⃗ ,θ)^T=R(a⃗,θ)^−1 是旋转矩阵的一个特殊属性。)
组织起来我们得到:
R(a⃗,θ)^−T=R(a⃗,θ)
三、旋转和坐标系
坐标系分为世界坐标系和相机坐标系
图一可看成P点逆时针旋转了θ角度,而图二可以看成坐标轴顺时针旋转了θ角度
从u,v轴分别向x,y轴画垂线,假设u,v长度为单位1,则u的坐标为(cosθ,-sinθ),v(sinθ,cosθ),对应旋转矩阵的数值
旋转矩阵的行可以看成新坐标轴的坐标
轴角公式:
例题:
图解如下图所示:
现将标准坐标轴原点移动到新的原点处,根据新x,y画出新x,y轴的方向(也可以根据上边公式得出),i点当好在新x轴上,(根号2,0)
四、推导GLULOOKAT
1、定义:gluLookAt是OpenGL中观察变换的一个关键函数。
2、gluLookAt矩阵可以简要总结为:gluLookAt矩阵可以认为先将相机/视点平移到原点,然后绕着原点旋转,使得相机可以观察模型,通常,在OpenGL中相机朝着−z⃗方向观察。
在这里,平移向量就是视点坐标,更准确的说是负的视点坐标,因为不得不对世界坐标系做相反的平移
CS184.1X 计算机图形学导论(第四讲)的更多相关文章
- CS184.1X 计算机图形学导论 第3讲L3V1
二维空间的变换 L3V1这一课主要讲了二维空间的变换,包括平移.错切和旋转. 缩放 缩放矩阵 使用矩阵的乘法来完成缩放 缩放矩阵是一个对角矩阵,对角线上的值对应缩放倍数 错切(shear) 错切可以将 ...
- CS184.1X 计算机图形学导论(第五讲)
一.观察:正交投影 1.特性:保持平行线在投影后仍然是平行的 2.一个长方体,对处在只有深度不同的位置上的同一物体来说,它的大小不会改变. 3.透视投影:平行线在远处会相交(例如铁轨) 4.glOrt ...
- CS184.1X 计算机图形学导论 HomeWork1
最容易填写的函数就是left.输入为旋转的角度,当前的eye与up这两个三维向量 void Transform::left(float degrees, vec3& eye, vec3& ...
- CS184.1X 计算机图形学导论 罗德里格斯公式推导
罗德里格斯公式推导 图1(复制自wiki) 按照教程里,以图1为例子,设k为旋转轴,v为原始向量. v以k为旋转轴旋转,旋转角度为θ,旋转后的向量为vrot. 首先我们对v进行分解,分解成一个平行于k ...
- CS184.1X 计算机图形学导论L3V2和L3V3(部分)
组合变换 连接矩阵的优点是可以使用这些矩阵单独操作. 多个变换依然是一个矩阵. 连接矩阵不可交换,因为矩阵乘法不具有交换性. X3=RX2 X2=SX1 X3=R(SX1)=(RS)X1 X3≠SRX ...
- CS184.1X 计算机图形学导论 作业0
1.框架下载 在网站上下载了VS2012版本的作业0的框架,由于我的电脑上的VS是2017版的,根据提示安装好C++的版本,并框架的解决方案 重定解决方案目标为2017版本. 点击运行,可以出来界面. ...
- CS184.1X 计算机图形学导论(第三讲)
第一单元(介绍关于变换的数学知识) :基本二维变换 模型坐标系,世界坐标系 1.缩放 Scale(规模,比例) Sx表示在x方向上放大的倍数,Sy表示在y方向上放大的倍数,因此X坐标乘以Sx,Y坐标乘 ...
- MIT算法导论——第四讲.Quicksort
本栏目(Algorithms)下MIT算法导论专题是个人对网易公开课MIT算法导论的学习心得与笔记.所有内容均来自MIT公开课Introduction to Algorithms中Charles E. ...
- 计算机图形学 opengl版本 第三版------胡事民 第四章 图形学中的向量工具
计算机图形学 opengl版本 第三版------胡事民 第四章 图形学中的向量工具 一 基础 1:向量分析和变换 两个工具 可以设计出各种几何对象 点和向量基于坐标系定义 拇指指向z轴正 ...
随机推荐
- 路由Vue-router 的使用总结
1.关于 router-view 匹配 vue 项目使用 vue-router,所有的根级别的路由都是在 App.vue 文件中的 router-view 中渲染的.比如下面的 path: '/' . ...
- Linux shell 归纳之 last
使用方法: 格式1:last -n n指定账号数量,最新前n个登陆信息(用户,终端,IP, 日期,时间和持续时间) 格式2:last -n <number of the latest accou ...
- Codeforces 86D Powerful array (莫队)
D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes input standard i ...
- HDU6669 Game(思维,贪心)
HDU6669 Game 维护区间 \([l,r]\) 为完成前 \(i\) 步使用最少步数后可能落在的区间. 初始时区间 \([l,r]\) 为整个坐标轴. 对于第 \(i\) 个任务区间 \([a ...
- 洛谷P1879 [USACO06NOV]玉米田Corn Fields(状压dp)
洛谷P1879 [USACO06NOV]玉米田Corn Fields \(f[i][j]\) 表示前 \(i\) 行且第 \(i\) 行状态为 \(j\) 的方案总数.\(j\) 的大小为 \(0 \ ...
- scrapy中的cookies参数详解
COOKIES_ENABLED 默认: True 是否启用cookiesmiddleware.如果关闭,cookies将不会发送给web server. COOKIES_DEBUG 默认: False ...
- 升级至webpack4.x踩坑记(热更新局部更新失败的问题修复)
零.前言 webpack升级的时候,会碰到各种个样的问题,大多数网上都能查到解决方案最简单的方案. 思路如下: 1.把css-loader,xxxloader等依赖都升级到最新 2.根据webpack ...
- js面向对象程序设计之属性和对象
写在博客之前的话,这是我这个刚毕业的菜鸟的第一篇博客.一口吃不成一个胖子,我也希望写的第一篇东西就让读的人醍醐灌顶.我会抱着怀疑的态度来看自己写的文章,如果有写错的地方,请大家不要被误导,如果有大神提 ...
- MongoDb python连接
方式一:简写 client = MongClient() 方式二:指定端口和地址 client = MongoClient('localhost':27017) 方式三:使用URI --统一资源定位 ...
- cts-verifier测试流程
测试目的: cts的补充测试,可以理解为没法自动化的cts测试,这个是人工测试. 测试前提: 1.发货user版本 2.selinux:Enable 5.外网环境 设备需求: 2个待测设备:1个手机或 ...