顯示具有 Matrix 標籤的文章。 顯示所有文章
顯示具有 Matrix 標籤的文章。 顯示所有文章

2024年8月13日 星期二

unzip 2×2 Matrix in 幾何一 第13講B


最近很少發照片
沒以前這麼喜歡cos了? 🤠

過了想逗男人開心的階段
我現在喜歡的是這種風格 🙂 

T Style

BGM

好 這次的迷團是

幾何一 第13講B 6:45

Tp(S1)指的是
所有和Regular Surface S1上1點p相切的向量
就好像位在1個切平面上
這個切平面就是Tangent space

教授嘴上說
φ:R3 → R3
α:I → S ⊆ R3

為什麼到了這裡又變成
φ:R2 → R2
α:I → R2

女人就是常常這樣
說是1套 做是1套 🙂

今夜だけでも シンデレラ・ボーイ
Do you wanna dance tonight? 🎶🤠 



所以上面的φ

只是把 u,v 變換到 u,v

φ:R2 → R2

那為什麼

R2的u,v能代表S1上的R3切向量?

假設uv space的有1個切向量(a,b)

(a,b) = a e1 + b e2 = a (1,0) + b (0,1)

把上面的基向量e1e2替換成R3TBT
(a,b) = a T + b BT
得到的就是S1上的R3切向量
(下面圖2)

幾何一 第7講B 3:07

幾何一 第7講B 19:52
圖2

上面的3×2矩陣
就是切平面的2個基向量T 和 BT

看得出來uv space的(a,b)
就是tangent space的(a,b)

但是等等

教授在幾何一 第13講C
舉的例子怎麼又變成 φ:R3 → R3
( 這裡的φ是繞z軸旋轉 )


幾何一 第13講C 2:36

ω是R3向量
繞z軸旋轉矩陣Sz,θ是3×3

藏在2×2矩陣的矩陣連鎖

φ2×2和φ3×3之間的關係如下

φ2×2 = M2×3 φ3×3 M3×2 

原來如此
還是T懂女人的心 🤠
我知女人心 🙂

2024年7月11日 星期四

重溫Projection Matrix



原始的Projection Matrix怎麼來


當NDC的z落在-1~1之間

Sx和Sy的作用
讓視椎體的fov變成一定是90度角
這樣/z落才會落在-1和1之間

因為視椎體的Near( or Far) plane不一定是正方形
可能是長方形
所以Sx和Sy其中1個還包含了ratio = w / h 因子


2023年9月18日 星期一

置換矩陣 💫 旋轉矩陣

繞Z軸旋轉的幾何解釋

下面5張圖是右手座標






其他旋轉矩陣

  
出處

繞Y軸旋轉怎麼來的

下面這張圖是左手座標

圖Y
把結果Transpose後,就和上圖一樣

懂是懂了
但如何用矩陣來表達圖Y呢?

單位矩陣

是互相垂直的3軸

column-major

row-major

置換矩陣

這裡交換x、z
 
column-major

row-major

交換2次結果不變


 

使用置換矩陣來💫


圖Y

上圖和下圖等價



其他

複合矩陣

2023年9月12日 星期二

LTC Area Light 裡的線代

學微積分 也學人蔘 🤠
學Area Light 也學線代 🙂

前篇 ➡️ LTC Area Light

教材


進入主題

o / dω 就叫Jacobian

paper的附錄A

paper的附錄A

附錄A的綠色框框?


M是Shearing Matrix
可以分解成
M = R-1SR

式(17)怎麼來的?

好人1生平安

出處

粉紅色框框?



水藍色框框?

用幾何的方式來理解[ M ][ m ]

M、m都是矩陣
[ M ]為矩陣M的行列式
[ m ]為矩陣m的行列式

[ M ] = 向量A、B、C張成的平行六面體體積
[ m ] = 向量a、b、c張成的平行六面體體積

2023年3月30日 星期四

Custom Projection Matrix to fit Vulkan default viewport

➡️ 前篇


客製化Projeciton Matrix

為了fit Vulkan奇怪的NDC

需要

Mb * Ma = Projection Matrix

Ma怎麼來?

Ma

Mb怎麼來?

當NDC的z落在-1~1之間 🐞
Mb

Fix 🐞

vulkan NDC的z落在0~1之間才對
OpenGL才是落在-1~1之間

vulkan tutorial裡有1行
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
就是在指定NDC要用0~1

code from GLM setup.hpp

這樣一來

Mb其實是
A = F/(F-N)
B= -NF/(F-N)
 

比較一下

(MbMa)和GLM的perspectiveRH_ZO
只差在 Result[1][1]的正負

這代表

➡️ 前篇 的結果2修正後的結果3
其實是同個投影矩陣!?


2021年12月6日 星期一

6參數版本的Projection Matrix

一直以來都是Fov派

突然有點好奇 6參數的版本

他推導的這1步 我覺得不是很直覺

所以想了一下,還是換成自己好理解的版本


Oblique Matrix 推導的疑惑

為什麼Eric先生 (Thank U
要用(sgn(C'.x),sgn(C'.y),1,1)
而不是F * (sgn(C'.x),sgn(C'.y),1,1)呢?

--------------

在projectin space
right平面和top平面會相交在1條線b
在b上的點,只有(F,F,F,F)是4個值相等的
而(F,F,F,F)/w之後
會得到 (1,1,1,1)

--------------

P是projection matrix (OpenGL Right Hand Fov version 
P的逆矩陣是 P^-1
P^-1 (F,F,F,F)=( Ratio F tan(θ), F tan(θ),-F,1 )=QF
P^-1 (1,1,1,1)=( Ratio tan(θ), tan(θ), -1,1/F )=Q

Matrix (Thank U

calculate

在view space , w =1
Q = Q/Q.w =QF
Q和QF其實是同1個點

用Q和QF算出來的 a 也是同1個東西
(因為上下都有1/F,最後就互相消掉了

--------------

3D平面 vs 4D平面
平面在3D的定義是
(X-P)。N=0
X、P、N都是3維的向量
。是內積;P是位在平面上的1點

X。N-P。N=0
X。N+d=0
展開來就是
(x,y,z,1)。(Nx,Ny,Nz,d)=0

Eric文章裡C指的是(Nx,Ny,Nz,d)
把平面當成了1個4D向量
view space C變換到Projection space的結果是C'

fov=2θ(half fov=θ)
Right裁切平面的情況為(以下為右手座標)
C'  = (-1,0,0,1)
C  = (-1/(R*tan(θ)),0,-1,0)

在view space是
(x,y,z,1)。(-1/(R*tan(θ)),0,-1,0) =0
-x/(R*tan(θ))+z=0

在projection space(4D)是
(x',y',z',w)。(-1,0,0,1) =0
-x'+w =0

2018年10月14日 星期日

世界World、點Point、向量Vector

P = Q + aX + bY



以世界為基準,定義座標系M



進行座標變換



矩陣連鎖



local to world



world to local