《计算机图形学基础》之变换矩阵

缩放变换 是最基本的变换,可以改变向量的长度和方向。

错切 变换,在一个轴向上根据另一个轴上的值以一定比例移动,看图很容易明白。沿 轴和沿 轴上的错切矩阵分别如下:

沿 轴的错切也可以理解是沿 轴顺时针旋转 (与 轴的夹角):

旋转变换 ,证明过程 ,逆时针旋转 的矩阵为:

可以看到旋转矩阵是 正交矩阵 ,并且有两对正交向量,一对是第一行和第二行向量;一对是第一列和第二列向量。每一行会被带给标准基向量( ),标准基向量会被带给每一列。简单来说就是,对标准基向量进行一个 旋转变换,就会变成 的列向量,看下图的 点,变换后为 ,就是 的第二列(因为 相当于是 ,所以是第二列);对 的每一行做 的旋转变换,结果就是标准基向量,看下面的 ,变换后为 。

反射变换 是一种使用负数的缩放变换,下面分别是关于 轴的反射变换矩阵,和关于 轴的反射变换矩阵:

有人会认为矩阵的左上角和右下角都为 时,也是一种反射变换(关于原点的反射),但实际上那只是 的旋转变换而已。

我们经常需要对一个图案进行多种变换,这些变换可以通过将他们的变换矩阵连乘进行 合并 ,比如需要先对 进行 变换得到 ,然后再对 进行 变换得到 ,那么有以下转换:

有时候我们也需要将一个组合的变换进行 分解 ,所有的 2D 矩阵都可以通过 奇异值分解(SVD) 成为旋转、缩放、旋转的形式。下图是把一个错切变换进行 SVD 的过程:

我们可以把 当做是一次旋转,把 当成是一次缩放,那么其实就是一个组合变换,请结合下面的文字看图:

我们可以发现对于 对称矩阵 来说,变换的表现就是沿着一对基向量进行非均匀缩放,这一对基向量依然是正交的,跟标准基向量没什么不同,只是整体方向不一样。而这一对基向量正是 对称矩阵 的特征向量。
看一个例子:

对于非对称矩阵,我们可以使用 奇异值分解(SVD) ,对此有疑问的可以看 这里 。他与特征值分解基本一样,不同的是左右旋转矩阵不再是同一个,而是分为两个,特征值分解的结果是 ,而奇异值分解 写成 ,这里的 依然是一个正交矩阵,列是 左奇异向量 , 也是一个正交向量,列是 右奇异向量 S 依然是对角矩阵,对角线上是奇异值。

还有一种旋转的分解叫做 Paeth 分解 ,这是将旋转分解成 错切 的方式,最大的好处就是不会在图像中出现间隙,下面是分解公式:

顺着笛卡尔坐标系的 缩放 矩阵为:

如何将一个点绕着 3D 中任意轴进行旋转呢?假设该点为 ,旋转轴为 (这里的 是起点为原点的向量,所以不涉及平移),那么如果能构建一组以 为 轴的基向量,并把 转换到该空间,进行旋转,再转回来就可以了。
第一步 :构建以 为 的一组正交基
首先我们将 进行归一化得到 :

第二步 :构建空间转换矩阵
假设我们有一组基向量, ,还有一个点 ,将 按行来摆好,写成 我们可以提前知道 在上述基向量中的坐标应该为 ,正是 的结果。下面是书上的证明过程,有兴趣的可以看一下,没兴趣就记着我们可以用任意的一组正交基,把 三个分量摆第一行,把 三个分量摆第二行,把 三个分量摆第三行,总而构建出转换到该空间下的转换矩阵。并且再次乘其转置,就可以再次变回来。

上面所说的变换都是方向或者点,还有一种特殊的向量叫做 法线 ,如果图形应用的变换矩阵我们称为 ,那么 经过 变换之后不再垂于表面,但切线 依然与表面相切。期望求出一个矩阵 ,使得 ,其中 。

以上所有的变换都是 线性变换 (原点不变,且直线变换后依然是直线),而 平移 变换并不满足。我们把一个线性变换 + 一次平移的操作叫做 仿射变换 ,通过增加一个维度的方式来实现,叫做 齐次坐标
我们把一个 2D 中的点 写成 ,把 的矩阵写成:

变换中一个比较重要的类叫做 刚体 ,他们只有旋转和平移组成,没有拉伸或者缩放。

我们知道了矩阵的几何意义之后,可以通过几何意义来进行逆操作,比如 的逆就是 ;比如旋转矩阵的逆就是角度变成相反的符号;平移矩阵的逆就是相反的方向。如果我们有一系列的变换 ,那么逆操作就是 。
不过,有些矩阵在代数上也是很好求的,比如说对于缩放矩阵,他是对角矩阵;第二重要的是旋转矩阵,他是正交矩阵,逆就是它的转置。所以使得求旋转和缸体的逆操作都变得简单。当然我们也需要知道,求完逆之后,原矩阵最下面一行不要动,比如是 的话,那逆的最下面一行也是 。
有趣的是,我们也可以使用奇异值分解来求逆,我们知道可以将一个矩阵分解成旋转——缩放——旋转的方式:

通常我们会在场景中有一个全局坐标系(世界坐标系),图中的 ,图中有另外一个坐标系 ,还有一个点 。



  • 鍙樻崲鐭╅樀鐨勫彉鎹㈡ц川
    绛旓細閫氳繃杩欑鏂规硶锛屼娇鐢ㄤ笌鍓嶉潰涓鏍风殑鐭╅樀涔樼Н鍙互灏嗗悇绉鍙樻崲鏃犵紳鍦伴泦鎴愬埌涓璧枫傚綋浣跨敤浠垮皠鍙樻崲鏃讹紝鍏舵鍧愭爣鍚戦噺w浠庢潵涓嶅彉锛岃繖鏍峰彲浠ユ妸瀹冨綋浣滀负 1銆備絾鏄紝閫忚鎶曞奖涓苟涓嶆槸杩欐牱銆傞忚鎶曞奖锛氫笁缁璁$畻鏈哄浘褰㈠涓彟澶栦竴绉嶉噸瑕佺殑鍙樻崲鏄忚鎶曞奖銆備笌骞宠鎶曞奖娌跨潃骞宠绾垮皢鐗╀綋鎶曞奖鍒板浘鍍忓钩闈笂涓嶅悓锛岄忚鎶曞奖鎸夌収浠庢姇褰...
  • 鐭╅樀鍙樻崲娣卞害鐞嗚В
    绛旓細娣卞叆鎺㈢储鐭╅樀鍙樻崲鐨勯瓍鍔涳紝璁╂垜浠窡闅忋3D鏁板鍩虹锛氬浘褰笌娓告垙寮鍙戙嬩腑鐨刧rassofsky锛屼竴鍚岃В寮璁$畻鏈哄浘褰㈠涓繖涓鏍稿績姒傚康鐨勭绉橀潰绾便傚潗鏍囩郴鐨勫ゥ绉: 浠庡熀纭鍑哄彂锛屾垜浠鍏堣鐞嗚В澶氱淮搴﹀潗鏍囩郴锛屽鐩磋鍧愭爣涓庢瀬鍧愭爣锛屽畠浠悇鏈夊叾鐙壒涔嬪銆傜劧鍚庯紝鎴戜滑灏嗚仛鐒︿簬涓栫晫鍧愭爣绯伙紝瀹冩槸鎵鏈夌墿浣撶殑鍩哄噯锛涙ā鍨嬪潗鏍囩郴鍒欐槸...
  • OpenGL:涓夌淮鏁板鍩虹鍧愭爣绯汇佸悜閲忋鐭╅樀
    绛旓細鍏朵腑鏁板鍙樻崲濡備笅锛氳繖鏍峰氨鑳藉湪娓叉煋鐨勫惊鐜鍏堝皢鎵鏈鐭╅樀缁勫悎璧锋潵锛屼娇寰幆鍐呬綔鐭╅樀涔樻硶鏃跺彧闇瑕佸拰涓涓煩闃电浉涔樺嵆鍙紙鐪佷竴娆$煩闃典箻娉曪紝鏁堢巼鍙彁楂樹笉灏戯級銆備笁缁鍥惧舰瀛涓殑鍧愭爣绯伙紝鍚戦噺銆佺煩闃电殑鏁板鍜屽嚑浣曟剰涔変互鍙婂叕寮忓氨鍒版涓烘锛屾湰鏂囨兜鐩栦簡銆3D鏁板鍩虹+鍥惧舰涓庢父鎴忓紑鍙戙嬪墠鍏珷鐨勫ぇ閮ㄥ垎鍐呭銆傚崟绾殑鐞嗚鐭ヨ瘑鏄...
  • 鍐欏嚭涓嬪垪鍥惧舰鍙樻崲鐨鍙樻崲鐭╅樀
    绛旓細1.鍘熷鐐筂(x,y,1)T锛屽彉鎹㈠悗鐨勭偣M'(x',y',1)T,婊¤冻鍏崇郴x'=3(x-4),y'=2(y-3)[ 3 0 -12]鏄撳緱鍙樻崲鐭╅樀涓篈=[ 0 2 -6 ] AM=M'锛堜笅鍚岋級[ 0 0 1 ]2.鍘熷鐐(x,y,1)锛屽彉鎹㈠悗鐨勭偣(x',y',1),婊¤冻鍏崇郴x'+x=2*2,y'+y=2*1,寰楀埌x'=4-x,y'=...
  • 鐢鐭╅樀琛ㄨ堪鍙樻崲涓庨綈娆″潗鏍
    绛旓細鎴戜滑鐭ラ亾鍦璁$畻鏈哄浘褰㈠涓紝鍙樻崲閫氬父鍖呭惈绾挎у彉鎹佷豢灏勫彉鎹侀忚鍙樻崲绛夈傚苟涓旓紝鎴戜滑鐢4x4鐨鐭╅樀琛ㄨ堪鍙樻崲锛屽悓鏃跺紩鍏ヤ簡榻愭鍧愭爣銆傞偅涔堬紝涓轰粈涔堜細杩欐牱鍛紵鍦ㄨ璁鸿繖涓棶棰樹箣鍓嶏紝鎴戜滑闇瑕佷簡瑙d竴涓嬬嚎鎬у彉鎹㈠拰浠垮皠鍙樻崲鐨勫畾涔夈傜嚎鎬ф槧灏 锛氬湪涓や釜鍚戦噺绌洪棿涔嬮棿鐨勪竴绉嶄繚鎸佸悜閲忓姞娉曞拰鏍囬噺涔樻硶鐨勭壒娈婃槧灏勩傜嚎鎬у彉鎹㈢绫昏緝澶...
  • 璁$畻鏈哄浘褰㈠鍑犱綍宸ュ叿绠楁硶璇﹁В鐩綍
    绛旓細棣栧厛锛屾垜浠粠绗1绔犵华璁哄紑濮嬶紝瀵璁$畻鏈哄浘褰㈠鐨鍩烘湰姒傚康杩涜浠嬬粛锛屼负鍚庣画鐨勬繁鍏ュ涔犲瀹鍩虹銆傚湪绗2绔狅紝鎴戜滑灏嗘繁鍏ユ帰璁鐭╅樀鍜岀嚎鎬х郴缁燂紝杩欐槸璁稿鍑犱綍宸ュ叿绠楁硶鐨勬暟瀛﹀熀纭銆傜煩闃电殑杩愮畻鍦ㄨ繖閲岃捣鍒颁簡鑷冲叧閲嶈鐨勪綔鐢紝鐞嗚В瀹冧滑瀵逛簬鍥惧舰鍙樻崲鍜屾姇褰辫嚦鍏抽噸瑕併傜3绔狅紝鍚戦噺浠f暟鏄浘褰㈠涓殑閲嶈宸ュ叿锛屽畠鎻忚堪浜嗙┖闂翠腑...
  • 鐭╅樀琛屽垪鍙樻崲鐨勬柟娉曞拰搴旂敤鏈夊摢浜?
    绛旓細鍏朵腑锛孋 鐨勬瘡涓厓绱 c_ij 绛変簬鐭╅樀 A 鐨勭 i 琛屼笌鐭╅樀 B 鐨勭 j 鍒楀搴斿厓绱犵殑涔樼Н涔嬪拰銆傜煩闃佃鍒楀彉鎹㈢殑搴旂敤 涓銆佺嚎鎬т唬鏁板拰鍑犱綍瀛︼細鐭╅樀鐢ㄤ簬鎻忚堪鍜岃В鍐崇嚎鎬ф柟绋嬬粍锛屼緥濡傚湪鍑犱綍瀛︿腑鐢ㄤ簬琛ㄧず鍜屽彉鎹㈢偣銆佸悜閲忓拰骞抽潰銆傜嚎鎬鍙樻崲鐭╅樀鍙互鎵ц鏃嬭浆銆佺缉鏀惧拰骞崇Щ绛夊嚑浣曟搷浣溿備簩銆佸浘鍍忓鐞嗗拰璁$畻鏈哄浘褰㈠锛氱煩闃...
  • 璁$畻鏈哄浘褰㈠鍐呭绠浠
    绛旓細杩欐湰璁$畻鏈哄浘褰㈠鏁欐潗鏄浗瀹垛滃崄涓浜斺濊鍒掓暀鏉愶紝鏃ㄥ湪浠嬬粛鍥惧舰瀛︾殑鍩烘湰姒傚康銆佸師鐞嗗拰绠楁硶銆傚叏涔﹀垎涓轰袱澶ч儴鍒嗭細绗竴閮ㄥ垎娑电洊浜嗕簩缁村浘褰紝鍖呮嫭鍥惧舰瀛︽杩般佸浘褰㈢▼搴忚璁°佸浘褰㈢敓鎴愮畻娉曘鐭╅樀鍙樻崲銆佸浘褰㈠鐞嗐佸浘褰氦浜掓妧鏈拰鏁版嵁缁撴瀯绛夊唴瀹癸紱绗簩閮ㄥ垎鍒欐繁鍏ュ埌涓夌淮鍥惧舰锛屾秹鍙奜penGL銆佷笁缁撮犲瀷銆佸浘褰㈡樉绀轰笌娑堥殣浠ュ強鐪熷疄...
  • 鍙樻崲鐭╅樀鐨勫簲鐢ㄩ鍩
    绛旓細浠绘剰绾挎у彉鎹㈤兘鍙互鐢ㄧ煩闃佃〃绀轰负鏄撲簬璁$畻鐨勪竴鑷村舰寮忥紝骞朵笖澶氫釜鍙樻崲涔熷彲浠ュ緢瀹规槗鍦伴氳繃鐭╅樀鐨勭浉涔樿繛鎺ュ湪涓璧枫傜嚎鎬у彉鎹笉鏄敮涓鍙互鐢ㄧ煩闃佃〃绀虹殑鍙樻崲銆俁缁寸殑浠垮皠鍙樻崲涓庨忚鎶曞奖閮藉彲浠ョ敤榻愭鍧愭爣琛ㄧず涓篟P缁达紙鍗硁+1 缁寸殑鐪熷疄鎶曞奖绌洪棿锛夌殑绾挎у彉鎹傚洜姝わ紝鍦ㄤ笁缁璁$畻鏈哄浘褰㈠涓ぇ閲忎娇鐢ㄧ潃 4x4 鐨鐭╅樀鍙樻崲銆
  • 浠涔堟槸鐭╅樀鐨勭嚎鎬鍙樻崲?
    绛旓細鎬讳箣锛岀嚎鎬鍙樻崲鏄氳繃鐭╅樀鏉ユ弿杩板悜閲忕┖闂翠腑鐨勫彉鎹㈣繃绋嬨傜悊瑙g煩闃电殑绾挎у彉鎹㈤渶瑕佹帉鎻$嚎鎬у彉鎹㈢殑瀹氫箟鍜鍩烘湰鎬ц川锛屼互鍙婄煩闃典笌鍙樻崲涔嬮棿鐨勫叧绯伙紝浠庤岃兘澶熷簲鐢ㄥ埌鍏蜂綋鐨勯棶棰樹腑銆傜嚎鎬у彉鎹㈢殑搴旂敤 1銆璁$畻鏈哄浘褰㈠锛氱嚎鎬у彉鎹㈠彲浠ョ敤鏉ヨ繘琛屽浘鍍忕殑骞崇Щ銆佹棆杞佺缉鏀惧拰鎶曞奖绛夋搷浣溿傝繖浜涘彉鎹㈣兘澶熷疄鐜板鍥惧儚鐨勫彉褰㈠拰澶勭悊锛屽箍娉涘簲鐢...
  • 扩展阅读:扫一扫题目出答案 ... 计算机基础知识必背 ... 张雪峰为啥不建议学计算机 ... 免费隐藏游戏计算机 ... 张雪峰谈计算机图形学 ... 计算机图形学基础答案 ... 功能计算器 ... 求解方程计算器 ... 万能计算器 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网