法向量变换矩阵的推导

本文详细介绍了如何推导法向量变换矩阵,通过分析切向量和法向量在空间变换中的行为,得出变换法向量所需矩阵的计算方式。文章探讨了在不同条件下变换矩阵的具体形式,如当变换矩阵为正交矩阵时,可以直接使用该矩阵变换法向量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文简述了一种法向量变换矩阵的推导过程

使用矩阵对点进行空间变换是图形学中的常见操作,假设变换矩阵为 M M M ,我们需要变换切向量 T T T(由 点 P 2 P_2 P2 - 点 P 1 P_1 P1 定义) 以及与其垂直的法向量 N N N .( T T T N N N 皆为列向量)

假设 点 P 2 P_2 P2 经过 M M M 变换后为 P 2 ′ P_2' P2, 点 P 1 P_1 P1 经过 M M M 变换后为 P 1 ′ P_1' P1, T ′ T' T 为经过变换后的切向量:

M ∗ P 2 = P 2 ′ M ∗ P 1 = P 1 ′ T ′ = P 2 ′ − P 1 ′ \begin{aligned} & M * P_2 = P_2' \\ & M * P_1 = P_1' \\ & T' = P_2' - P_1' \end{aligned} MP2=P2MP1=P1T=P2P1

对于原切向量 T T T,我们希望找到一个矩阵 M ′ M' M, 使得:

M ′ ∗ T = T ′ M' * T = T' MT=T

我们直接令 M ′ = M M' = M M=M 来试一下:

M ′ ∗ T = M ∗ T = M ∗ ( P 2 − P 1 ) = M ∗ P 2 − M ∗ P 1 = P 2 ′ − P 1 ′ = T ′ \begin{aligned} M' * T = M * T &= M * (P_2 - P_1) \\ &= M * P_2 - M * P_1 \\ &= P_2' - P_1' \\ &= T' \end{aligned} MT=MT=M(P2P1)=MP2MP1=P2P1=T

可见对于切向量 T T T ,我们可以直接使用 M M M 对其进行变换.

对于法向量 N N N ,我们有(注意,第一个公式中的点号表示点积):

T ⋅ N = 0    ⟹    T T ∗ N = 0 \begin{aligned} & T \cdot N = 0 \implies \\ & T^T * N = 0 \end{aligned} TN=0TTN=0

假设变换后的法向量为 N ′ N' N, 我们希望仍然保持其与 T ′ T' T( T T T的变换后向量) 的垂直(注意,第一个公式中的点号表示点积):

T ′ ⋅ N ′ = 0    ⟹    T ′ T ∗ N ′ = 0 \begin{aligned} & T' \cdot N' = 0 \implies \\ & T'^T * N' = 0 \end{aligned} TN=0TTN=0

假设用于变换法向量的矩阵为 G G G, 则应有:

T ′ = M ∗ T N ′ = G ∗ N T ′ T ∗ N ′ = 0 ( M ∗ T ) T ∗ ( G ∗ N ) = 0 T T ∗ M T ∗ G ∗ N = 0 T T ∗ ( M T ∗ G ) ∗ N = 0 \begin{aligned} & T' = M * T \\ & N' = G * N \\ & T'^T * N' = 0 \\ & (M * T)^T * (G * N) = 0 \\ & T^T * M^T * G * N = 0 \\ & T^T * (M^T * G) * N = 0 \end{aligned} T=MTN=GNTTN=0(MT)T(GN)=0TTMTGN=0TT(MTG)N=0

由于我们知道:

T T ∗ N = 0 T^T * N = 0 TTN=0

所以我们只要令(注意,这只是一种可能的取值,并不是唯一取值,我们的目的也仅是需要获得一种可能的取值):

M T ∗ G = I M^T * G = I MTG=I

便可以满足上面的等式 :

T T ∗ ( M T ∗ G ) ∗ N = T T ∗ I ∗ N = T T ∗ N = 0 \begin{aligned} & T^T * (M^T * G) * N = \\ & T^T * I * N = \\ & T^T * N = 0 \end{aligned} TT(MTG)N=TTIN=TTN=0

所以变换法向量,我们需要使用普通变化矩阵逆的转置(或者说转置的逆,对于可逆矩阵,其转置矩阵的逆矩阵等于其逆矩阵的转置矩阵)

G = ( M T ) − 1 = ( M − 1 ) T G = (M^T)^{-1} = (M^{-1})^T G=(MT)1=(M1)T


如果变换矩阵 M M M 是正交矩阵,则有(根据正交矩阵定义)

M − 1 = M T M^{-1} = M^T M1=MT

于是法向量的变换矩阵变为:

G = ( M T ) − 1 = ( M − 1 ) − 1 = M G = (M^T)^{-1} = (M^{-1})^{-1} = M G=(MT)1=(M1)1=M

此时我们就可以直接使用 M M M 来变换法向量了.

更多资料
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值