文章目录

  • 1、线性变换
  • 2、仿射变换
  • 3、张成空间
  • 4、对于齐次坐标的理解
  • n、多边形重心的推论

1、线性变换

线性变换从几何直观有三个要点:

  • 变换前是直线的,变换后依然是直线
  • 直线比例保持不变
  • 变换前是原点的,变换后依然是原点
    比如说旋转,剪切

2、仿射变换

仿射变换从几何直观只有两个要点:

  • 变换前是直线的,变换后依然是直线
  • 直线比例保持不变
inline Vector2D operator * ( const Vector2D& vec,const Matrix3x3& ma) {Vector2D new_vec;float x = ma._11 * vec.x + ma._21 * vec.y + ma._31;float y = ma._12 * vec.x + ma._22 * vec.y + ma._32;float z = ma._13 * vec.x + ma._23 * vec.y + ma._33;new_vec.x = x / z;new_vec.y = y / z;return new_vec;
}

  之前我问过谢老师一个问题,为什么代码第6、7行要除以 z,实际上这就涉及到放射变化的部分,因为平移已经不是。线性变换了,平移之后,原点离开了原来的坐标位置。

  所以,我们平移的时候,实际上是增加了一个向量[0,0,1],同时增加了一个维度,最后我们要把我们的向量还原到之前的维度。

3、张成空间

  • 二维的张成空间

  • 三维的张成空间

  • 线性相关:有多组向量构成张成空间,移除其中一个 不减少 张成空间的大小
    线性无关:所有向量 给张成空间增添了新的维度

  • 线性相关:多组向量中,有向量 = 其他向量的线性组合

  • 齐次向量:表示同一条直线的一类向量

4、对于齐次坐标的理解

参考链接:https://www.cnblogs.com/csyisong/archive/2008/12/09/1351372.html

  “齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”—— F.S. Hill, JR。

  如何在普通坐标(Ordinary Coordinate)和齐次坐标(Homogeneous Coordinate)之间进行转换:

  • (1)从普通坐标转换成齐次坐标时
      如果(x,y,z)是个点,则变为(x,y,z,1);
      如果(x,y,z)是个向量,则变为(x,y,z,0)

  • (2)从齐次坐标转换成普通坐标时
      如果是(x,y,z,1),则知道它是个点,变成(x,y,z);
      如果是(x,y,z,0),则知道它是个向量,仍然变成(x,y,z)

  《GAMES101》中,也介绍了关于3D坐标系下,齐次坐标的问题。

  以上是通过齐次坐标来区分向量和点的方式。从中可以思考得知,对于平移T、旋转R、缩放S这3个最常见的仿射变换,平移变换只对于点才有意义,因为普通向量没有位置概念,只有大小和方向。
  而旋转和缩放对于向量和点都有意义,你可以用类似上面齐次表示来检测。从中可以看出,齐次坐标用于仿射变换非常方便。

  此外,对于一个普通坐标的点P=(Px, Py, Pz),有对应的一族齐次坐标(wPx, wPy, wPz, w),其中w不等于零。比如,P(1, 4, 7)的齐次坐标有(1, 4, 7, 1)、(2, 8, 14, 2)、(-0.1, -0.4, -0.7, -0.1)等等。因此,如果把一个点从普通坐标变成齐次坐标,给x,y,z乘上同一个非零数w,然后增加第4个分量w;如果把一个齐次坐标转换成普通坐标,把前三个坐标同时除以第4个坐标,然后去掉第4个分量。

  由于齐次坐标使用了4个分量来表达3D概念,使得平移变换可以使用矩阵进行,从而如F.S. Hill, JR所说,仿射(线性)变换的进行更加方便。由于图形硬件已经普遍地支持齐次坐标与矩阵乘法,因此更加促进了齐次坐标使用,使得它似乎成为图形学中的一个标准。

n、多边形重心的推论

Yes, yes, but why? The current answers (as well as Wikipedia) do not contain enough detail to understand these formulas immediately. So let’s start with the very basic definition of the area centroid: C⃗=∬r⃗(x,y)dxdy∬dxdy=(∬xdxdy,∬ydxdy)∬dxdy=(mx,my)A=(Cx,Cy)\vec{C} = \frac{\iint \vec{r}(x,y)\,dx\,dy}{\iint dx\,dy} = \frac{(\iint x\,dx\,dy,\iint y\,dx\,dy)}{\iint dx\,dy} = \frac{(m_x,m_y)}{A}=(C_x,C_y) C=∬dxdy∬r(x,y)dxdy​=∬dxdy(∬xdxdy,∬ydxdy)​=A(mx​,my​)​=(Cx​,Cy​) Allright, let’s get rid of the double integrals in the first place, by employing Green’s theorem : ∬(∂M∂x−∂L∂y)dxdy=∮(Ldx+Mdy)\iint \left( \frac{\partial M}{\partial x} - \frac{\partial L}{\partial y} \right) dx\,dy = \oint \left( L\,dx + M\,dy \right) ∬(∂x∂M​−∂y∂L​)dxdy=∮(Ldx+Mdy) At the edges of the (convex) polygon we have: KaTeX parse error: Undefined control sequence: \mbox at position 88: …d{cases} \quad \̲m̲b̲o̲x̲{with} \quad \b… Then by substitution of M(x,y)=xM(x,y) = xM(x,y)=x and L(x,y)=0L(x,y) = 0L(x,y)=0 we have: A=∬dxdy=∮xdy=∑i=0n−1∫01[xi+(xi+−xi)t](yi+−yi)dt=∑i=0n−1(yi+−yi)[xit∣01+(xi+−xi)12t2∣01]=12∑i=0n−1(xi++xi)(yi+−yi)=12∑i=0n−1(xiyi+−xi+yi)A = \iint dx\,dy = \oint x\,dy = \sum_{i=0}^{n-1} \int_0^1 \left[x_i + (x_{i+}-x_i)\,t\right](y_{i+}-y_i)\,dt=\\ \sum_{i=0}^{n-1}(y_{i+}-y_i)\left[x_i\left.t\right|_0^1 + (x_{i+}-x_i)\frac{1}{2}\left.t^2\right|_0^1\right] = \frac{1}{2}\sum_{i=0}^{n-1}(x_{i+}+x_i)(y_{i+}-y_i)=\\ \frac{1}{2}\sum_{i=0}^{n-1} (x_iy_{i+}-x_{i+}y_i) A=∬dxdy=∮xdy=i=0∑n−1​∫01​[xi​+(xi+​−xi​)t](yi+​−yi​)dt=i=0∑n−1​(yi+​−yi​)[xi​t∣01​+(xi+​−xi​)21​t2∣∣​01​]=21​i=0∑n−1​(xi+​+xi​)(yi+​−yi​)=21​i=0∑n−1​(xi​yi+​−xi+​yi​) The last move by telescoping.
The main integral for the xxx-coordinate of the centroid is,
with M(x,y)=x2/2M(x,y) = x^2/2M(x,y)=x2/2 and L(x,y)=0L(x,y) = 0L(x,y)=0: mx=∬xdxdy=∮12x2dy=12∑i=0n−1(yi+−yi)∫01[xi+(xi+−xi)t]2dt=12∑i=0n−1(yi+−yi)[xi2t∣01+2xi(xi+−xi)12t2∣01+(xi+−xi)213t3∣01]=12∑i=0n−1(yi+−yi)[xi2+xi(xi+−xi)+13(xi+−xi)2]=16∑i=0n−1(yi+−yi)[xi+2+xixi++xi2]=16∑i=0n−1[xixi+yi++xi2yi+−xi+2yi−xixi+yi]⟹mx=16∑i=0n−1(xi+xi+)(xiyi+−xi+yi)m_x = \iint x\,dx\,dy = \oint \frac{1}{2}x^2 \,dy = \frac{1}{2}\sum_{i=0}^{n-1}(y_{i+}-y_i)\int_0^1\left[x_i + (x_{i+}-x_i)\,t\right]^2\,dt=\\ \frac{1}{2}\sum_{i=0}^{n-1}(y_{i+}-y_i)\left[x_i^2\left.t\right|_0^1+2x_i(x_{i+}-x_i)\frac{1}{2}\left.t^2\right|_0^1 +(x_{i+}-x_i)^2\frac{1}{3}\left.t^3\right|_0^1\right]=\\ \frac{1}{2}\sum_{i=0}^{n-1}(y_{i+}-y_i)\left[x_i^2+x_i(x_{i+}-x_i)+\frac{1}{3}(x_{i+}-x_i)^2\right]=\\ \frac{1}{6}\sum_{i=0}^{n-1}(y_{i+}-y_i)\left[x_{i+}^2+x_ix_{i+}+x_i^2\right]=\\ \frac{1}{6}\sum_{i=0}^{n-1}\left[x_ix_{i+}y_{i+}+x_i^2y_{i+}-x_{i+}^2y_i-x_ix_{i+}y_i\right]\quad\Longrightarrow\\ m_x = \frac{1}{6}\sum_{i=0}^{n-1}(x_i+x_{i+})(x_iy_{i+}-x_{i+}y_i) mx​=∬xdxdy=∮21​x2dy=21​i=0∑n−1​(yi+​−yi​)∫01​[xi​+(xi+​−xi​)t]2dt=21​i=0∑n−1​(yi+​−yi​)[xi2​t∣01​+2xi​(xi+​−xi​)21​t2∣∣​01​+(xi+​−xi​)231​t3∣∣​01​]=21​i=0∑n−1​(yi+​−yi​)[xi2​+xi​(xi+​−xi​)+31​(xi+​−xi​)2]=61​i=0∑n−1​(yi+​−yi​)[xi+2​+xi​xi+​+xi2​]=61​i=0∑n−1​[xi​xi+​yi+​+xi2​yi+​−xi+2​yi​−xi​xi+​yi​]⟹mx​=61​i=0∑n−1​(xi​+xi+​)(xi​yi+​−xi+​yi​) The last two moves after telescoping again.
The main integral for the yyy-coordinate of the area centroid is,
with M(x,y)=0M(x,y) = 0M(x,y)=0 and L(x,y)=−y2/2L(x,y) = -y^2/2L(x,y)=−y2/2: my=∬ydxdy=∮−12y2dx=−12∑i=0n−1(xi+−xi)∫01[yi+(yi+−yi)t]2dtm_y = \iint y\,dx\,dy = \oint -\frac{1}{2}y^2 \,dx = -\frac{1}{2}\sum_{i=0}^{n-1}(x_{i+}-x_i)\int_0^1\left[y_i + (y_{i+}-y_i)\,t\right]^2\,dt my​=∬ydxdy=∮−21​y2dx=−21​i=0∑n−1​(xi+​−xi​)∫01​[yi​+(yi+​−yi​)t]2dt Which is similar to the main integral for the xxx-coordinate of the centroid: mx=∬xdxdy=∮12x2dy=12∑i=0n−1(yi+−yi)∫01[xi+(xi+−xi)t]2dtm_x = \iint x\,dx\,dy = \oint \frac{1}{2}x^2 \,dy = \frac{1}{2}\sum_{i=0}^{n-1}(y_{i+}-y_i)\int_0^1\left[x_i + (x_{i+}-x_i)\,t\right]^2\,dt mx​=∬xdxdy=∮21​x2dy=21​i=0∑n−1​(yi+​−yi​)∫01​[xi​+(xi+​−xi​)t]2dt It is seen that everything is the same if we just exchange xxx and yyy, except for the minus sign, hence: my=−16∑i=0n−1(yi+yi+)(yixi+−yi+xi)=16∑i=0n−1(yi+yi+)(xiyi+−xi+yi)m_y = -\frac{1}{6}\sum_{i=0}^{n-1}(y_i+y_{i+})(y_ix_{i+}-y_{i+}x_i)=\frac{1}{6}\sum_{i=0}^{n-1}(y_i+y_{i+})(x_iy_{i+}-x_{i+}y_i) my​=−61​i=0∑n−1​(yi​+yi+​)(yi​xi+​−yi+​xi​)=61​i=0∑n−1​(yi​+yi+​)(xi​yi+​−xi+​yi​) Combining the partial results found gives the end result, as displayed in the question.

【图形学】04 数学部分(四、放射变换)相关推荐

  1. Games101计算机图形学入门基础之一:向量变换、矩阵变换、视图变换、欧拉角与四元数

    Games101计算机图形学入门基础之一:向量变换.矩阵变换.齐次坐标.欧拉角与四元数 目录 Games101计算机图形学入门基础之一:向量变换.矩阵变换.齐次坐标.欧拉角与四元数 前言 向量 向量加 ...

  2. 计算机图形学二维图形基本变换实验原理,计算机图形学实验:二维图形变换.docx...

    计算机图形学实验:二维图形变换.docx (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验三 二维图形变换一.实验任务1. 通 ...

  3. 高等工程数学 —— 第四章 (1)线性方程组的直接解法与广义逆矩阵求解矛盾方程组

    高等工程数学 -- 第四章 (1)线性方程组的直接解法与广义逆矩阵求解矛盾方程组 文章目录 高等工程数学 -- 第四章 (1)线性方程组的直接解法与广义逆矩阵求解矛盾方程组 线性方程组的直接解法 Ga ...

  4. 计算机图形学04:中点Bresenham算法画椭圆

    作者:非妃是公主 专栏:<计算机图形学> 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成.--曾国藩 文章目录 专栏推 ...

  5. 深度学习(8)TensorFlow基础操作四: 维度变换

    深度学习(8)TensorFlow基础操作四: 维度变换 1. View 2. 示例 3. Reshape操作可能会导致潜在的bug 4. tf.transpose 5. Squeeze VS Exp ...

  6. 计算机控制z反变换公式,第三章 计算机控制系统的数学描述(修正Z变换).ppt

    第三章 计算机控制系统的数学描述(修正Z变换) * §3.4 修改Z变换 1.具有多采样频率系统 在某些控制系统中,存在着不同采样频率的采样开关,如图3.10所示. 图3.10 具有不同采样频率系统结 ...

  7. 【复习必备】高中数学必修四公式汇总, 精华版赶快收藏

    本文作者:vxbomath 今天,我为大家带来了高中数学必修四公式汇总,你们掌握了吗?还没有掌握的记得要收藏哦! 1.高中数学--三角函数 2.高中数学--平面向量 3.高中数学--三角恒等变换 好了 ...

  8. 计算机图形学c#版pdf,计算机图形学的数学工具与C#实现.pdf

    计算机图形学的数学工具与C#实现.pdf 国外科技新书评介 2010年第2期 (总第274期) 计算机科学 YoshifumiM asunagaAoyamaGakuin 务的系统结构中是必不可少的,为 ...

  9. OpenGL学习——入门篇 第三章 四个变换及模拟地球公转

    一.四个变换 1.1 视图变换:不同位置观察它: 涉及函数: glMatrixMode(GL_MODELVIEW);//设置当前操作的矩阵为"模型视图矩阵" glLoadIdent ...

  10. 高中数学必修四平面向量复习笔记知识点

    本文作者:vxbomath 今天我给大家分享高中数学必修四平面向量复习笔记知识点, 以帮助同学梳理知识. 好了,高中数学必修四平面向量复习笔记知识点今天分享就到这里了,需要更多技巧视频可以私信老师每天 ...

最新文章

  1. python 是什么类型的语言-python到底是什么类型的语言
  2. 深度学习在CTR预估的应用
  3. AOJ 0118: Property Distribution (简单DFS)
  4. 这是我的C语言入门笔记。
  5. 【招聘(北京武汉)】北京高远华信科技 .NET 高级工程师
  6. IOC操作Bean管理XML方式(创建对象和set注入属性)
  7. 为什么服务器要选择 Linux,这里总结了 10 大理由
  8. bcb quickrep保存为 图片_不容错过的SCI图片处理和组图方法
  9. php mysql 插入多条数据_mysql如何插入多条数据?
  10. irobot擦地机器人故障_不想跪下擦地板!iRobot新神器擦地机器人能否帮到你?
  11. 艺赛旗(RPA)国家企业信用信息公示系统验证码破解(一)
  12. 自控力读书笔记:第二章 意志力的本能:人生来就能地址奶酪蛋糕的诱惑
  13. kindle的xray怎么用_Kindle 使用小技巧之 X-Ray 功能
  14. Mysql中查询连续一段时间内统计数据
  15. xe6 动态元素数量
  16. win10桌面计算机怎么显示器,win10电脑三分屏怎么设置_win10电脑怎么分屏3个显示器...
  17. 研究型论文_用于优化入侵检测类不平衡数据集中SMOTE比率的机器学习方法(英文论文)
  18. if条件句和switch条件句
  19. 互联网大厂公司月饼大比拼
  20. node.js毕业设计联影医疗器械管理系统小程序(源码+程序+LW+部署)

热门文章

  1. 苹果Iphone4手机越狱及安装破解程序图文教程
  2. 一起浅谈NP保护检测(新破天一剑)X64
  3. mysql开窗函数有哪些_mysql开窗函数
  4. 网络安全选择试题及答案
  5. 基于STM32F407实现快速傅里叶变化(FFT),计算指定频率的幅值
  6. linux 在线和离线安装Mplayer视频播放器
  7. 游戏开发入门(五)游戏动画系统
  8. java中的saturn_Saturn简介及架构介绍
  9. 口腔医院管理系统 | 口腔医院小程序 | 数字化门店转型
  10. SiamFC响应图热力图绘制