射線
定義定義射線需要起點,方向,長度
起點p0
方向=單位向量u
長度=t
向量相加為所形成平行四邊形的對角線
得到射線p(t)=p0+tu
Unity Raycast API
public static bool Raycast(Vector3 origin, Vector3 direction, float maxDistance)其實就和射線定義相同(起點,方向,長度)
平面
定義p為平面上任意點,n為平面法向量,p1為法向量交於平面的點
p-p1向量=p-p1 假設為(ax,ay,az)
n假設為 (bx,by,bz)
p-p1與n垂直
向量點積公式 (a長)*(b長)*Cos(90)=0
向量點積算法(ax*bx+ay*by+cz*bz)
得到n.(p-p1)=0
射線與平面相交
射線
p=p0+tu
平面
n.(p-p1)=0
把射線p帶入平面
n.(p0+tu - p1)=0
n.p0+n.tu-n.p1=0
n.tu=n.p1-n.p0
t=n.p1-n.p0/n.u
這裡 (.)是點積
若t>=0,射線與平面相交,且交點為p0+tu
若t<0,兩不相交
沒有留言:
張貼留言