反射矩陣(reflection matrix)推導

2021-07-16 02:07:46 字數 1348 閱讀 2883

1. 了解  

平面方程(plane equation)  :

2. 設平面為(nx,ny,nz,d),則以此平面為鏡面的列主序反射矩陣如下:

推導如下:

一,平面的表示:

如圖所示,過點p,法向量為n的平面,可表示為:

np+d=0

其中d為平面到原點的有向距離。如果平面面向原點,則d為正,如果平面背向原點,則d為負。

於是平面可以表示為四維向量(nx,ny,nz,d)。

二,reflection matrix推導:

如圖平面為np+d=0,q為空間任一點,q'為q在平面上的投影,q''為q關於平面的對稱點,有如下關係:

r=q-p

a=(rn)n

b=r-a

c=-a

q'=p+b

q''=q'+c

np+d=0

綜合以上各式,得:

q''=q-2(qn+d)n

寫成分量形式即:

q''x=qx-2(qx*nx+qy*ny+qz*nz+d)*nx

q''y=qy-2(qx*nx+qy*ny+qz*nz+d)*ny

q''z=qz-2(qx*nx+qy*ny+qz*nz+d)*nz

q''x=qx(1-2nx*nx)+qy(-2ny*nx)+qz(-2nz*nx)-2d*nx

q''y=qx(-2nx*ny)+qy(1-2ny*ny)+qz(-2nz*ny)-2d*ny

q''z=qx(-2nx*nz)+qy(-2ny*nz)+qz(1-2nz*nz)-2d*nz

寫成矩陣形式即:

這樣就得到了reflection matrix。

unity standard assets裡的water.cs中有下面一段計算reflection matrix的**,與上面結果一致:

// calculates reflection matrix around the given plane

static void calculatereflectionmatrix(ref matrix4x4 reflectionmat, vector4 plane)

矩陣理論應用之反射變換的理解

設 sigma 是實平面r2r r2上的線性變換,其關於標準基的矩陣為 p css c p left begin end right p cs s c 其中c2 s2 1 c s 1 c2 s2 1,證明 sigma 是反射變換,並計算其對稱軸。由於det i p 2 1 operatorname ...

反射 反射的總結

就是得到class物件後,反向獲取物件的各種資訊 公有的,私有的等等 帶有declared修飾的方法可以反射到私有的方法,沒有declared修飾的只能用來反射公有的方法。其他的annotation field constructor也是如此。執行過程中操作各種類的物件。可以解耦,提高可拓展性。效能...

java反射 4 反射賦值

本篇介紹利用反射給物件賦值 方法1 獲得並使用預設構造器建立類的物件 並對物件賦值 這裡類用的是person類 屬性有 id name address 來做例子 public class person public void setid integer id public string getnam...