找回密码
 立即注册
查看: 707|回复: 0

图形学里面的数学

[复制链接]
发表于 2021-4-20 08:51 | 显示全部楼层 |阅读模式
首发于知乎:https://zhuanlan.zhihu.com/p/255222417
文章建立于 20200621 暴雨转晴
文章修改于 20200919
文章完成于 20200919
声明:此文章为本人学习笔记。首发知乎。自己温习,也同他人分享沟通。如果文章中有侵权,错误,或者有不同的理解,本人希望在学习的路上得到更多的沟通,反馈。鄙人在此致谢。烦请大家多指教!
《图形学里面的数学》是本人计划的系列文章,每次更新为虎书间隔三章内容。
随着工作中的内容和美术在计算机中的图形表现,更随着深入的研究,越是发现基础学识的重要性,在这里写一个笔记给留自己复习及需要的朋友们查阅。
实用和技巧:指的是在各引擎或者DCC内的实现方法和原理;更好的理解记忆技巧。

文章大纲 一、向量 二、矩阵 三、变换

一、向量:
1.1、向量 向量:(向量又叫矢量)有方向有长度,无位置。
存在一个特殊性向量为:零向量。
向量相加:

向量相减:

向量与标量(常数,一个值)相乘:

向量求模(模的意思是标量,是长度,是一个数值):

向量归一化:
归一化,又叫单位化;模(长度)为1的向量。
在图形学中,需要的是向量的模标准化(归一化)后,向量点积结果,或者是求两个向
量的cos角度值。

1.2、内积(点积) 向量的点积(点积又叫内集): 点积:向量乘向量=向量长度 乘 向量长度 乘 两个向量的Cos角度 实用和技巧:在所有计算前需归一化,所以上述点积的公式化解后,最终的值便是Cos角度的值域是-1到1内。 小参考:

在图形学里,向量点积前需要归一化(转为模长为1的向量)再计算,所以

在这个公式里点积的结果就是CosA的值,向量A的模为1,向量B的模也为1。
11CosA就是结果,而Cos的值域只有-1到1。

1.3、外积(叉积)
向量的叉积(叉积又叫外集):
叉积的结果也是一个向量。
要绝:结果x为与x不相干的参数相减,结果y为与y不相干的参数相减,结果z为与z不想干的参数相减。 实用和技巧:用来判断点在三角形内还是在三角形外,如果一个点都在三个向量的右侧或者左侧,那么就在三角形内。前提条件也需要定义好是左手法则还是右手法则。

向量的投影计算:
向量的投影结果为向量。

常数与常数先计算,然后再计算常数与向量的计算,得出结果为向量。

1.4、向量空间(二维化)
数组化(横向表示,或者竖直表示)。

二、矩阵
图形学中,常见于把顶或者向量增加一个数,引入齐次概念,来方便做计算。目的在计算中把计算写成矩阵与向量的计算。
2.1、矩阵




2.2、线性方程组
初等变换:结果为一个向量乘上一个简约矩阵。
什么叫简约矩阵:

解齐次方程组:用的增广矩阵得到简约矩阵,再求得线性方程组的解方法:

2.3、逆矩阵

2.4 行列式
基本概念:

二阶行列式:它的算法(2X2大小方阵)

三角行列式:上三角行列式与下三角行列式算法

在主对角上或者下都为零的状态下。

特殊行列式:
性质,主对角数相等,上三角与下三角数相等。

特殊行列式:
等比行列式,后行与前行呈指数等比。
算法:使用后列比数与此列比数相减的乘积。

行列式的常见算法:

行列式对换行列后的表示:

行列式中存在一样的列元素或者行元素,有可能存在等比例的,其值为0:

行列式的拆分:

常见拆分解法如下:示例1


示例2:

在常用行列式计算时,都是采用以上的几种性质:
0、首先找规律和性质看能否快速得到结果
1、其次就是把行列式转变成简约式,从简约式得到上三角或者下三角性质
书写的规范性(矩阵算简约矩阵时也可以这样书写):
双向箭头为互换,r1为第一行,c2为第二列。

便捷计算:

示例:
1

2

3

4

4步完成计算。
算法总结:
齐次后值为0,非齐次后值为非零常数。

三、坐标变换
3.1、线性变换
正交矩阵:可保持被变换的向量的长度和角度;变换前和变换后是一样的长度和角度。
偏手性:在计算时需要注意是左手空间,还是右手空间坐标系。
3.2、比例变换
向量或者标量与矩阵相乘,得到比例变换。可以是0,也可以是均匀变换,和非均匀变换。
3.3、旋转变换
二维旋转变换推导:(常用于UV和平面图像上)


三维旋转变换:
旋转变换是矩阵中最复杂的变换。一般在计算中都是拆分去计算,先旋转一个轴,再旋转另一个,最后旋转另一个,完成旋转操作。 一般分成4步,第一步在一个平面内,第二步在另一轴平面内,第三步在最后的平面内,第4步平移。
3.4、四维变换
从MIT大神们听来,为什么这样操作:因为人类懒惰,需要一个方便省时省力的事情。所以就有这样的操作。只需要注意4X4矩阵的最后一位,是常数还是0,在记算中正常情况下都把他们变成1或者0,如果不是1,那么把所有元素乘个倒数变成1。在数据计算时用来区分是向量还是坐标。
3.5、法向量和切向量(就是顶点法线和顶点切线)
3.6、四元素
用四元素来做旋转比用普通旋转变换更便捷。
3.6.2、球型线性插值
参考资料:
1.1、闫令琪 GAMES101《现代计算机图形学入门》 GAMES101 论坛
1.2、《Fundamentals of Computer Graphics, Fourth Edition》 tiger book 业界俗称 《虎书》圣典
1.3、《3D游戏与计算机图形学中的数学方法》Eric Lengyel著 詹海生译
1.4、《Unity Shader入门精要》第4章节 冯乐乐著
https://www.bilibili.com/video/BV1Dt411t7hs
https://www.bilibili.com/video/BV1M7411E74W
https://www.bilibili.com/video/BV1s4411S78P 3Blue1Brown
https://www.bilibili.com/video/BV1X7411F744?p=2 MIT games-cn.orghttps://forum.taichi.graphics/t/topic/272https://www.bilibili.com/video/BV1NW41167rD?p=1 行列式与矩阵

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-21 00:46 , Processed in 0.088867 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表