结论

i\vec{i} 为入射向量,n\vec{n} 为法线单位向量r\vec{r} 为反射向量,则有:

r=i2(in)n\vec{r} = \vec{i} - 2(\vec{i}\cdot\vec{n})\vec{n}

推导

流程:设一个法向量的单位向量,利用点乘得到投影进而表示出平行四边形的对角线的向量,再通过平行四边形法则得到反射向量。

根据需求建立如下模型(注意 i\vec{i} 的方向,以及 n\vec{n} 为单位向量):

模型

根据平行四边形法则,有:

i+r=2OM-\vec{i} + \vec{r} = 2\vec{OM}

不难得出:

OM=in|\vec{OM}| = -\vec{i}\cdot\vec{n}

向量 OM\vec{OM} 的单位向量其实就是法线向量 n\vec{n},即:

OM=(in)n\vec{OM} = -(\vec{i}\cdot\vec{n})\vec{n}

且:

i+r=2OM-\vec{i} + \vec{r} = 2\vec{OM}

移项得到开头的公式:

r=i2(in)n\vec{r} = \vec{i} - 2(\vec{i}\cdot\vec{n})\vec{n}