2016年3月8日 星期二

射線 平面

射線

定義

定義射線需要起點,方向,長度
起點p0
方向=單位向量u
長度=t

向量相加為所形成平行四邊形的對角線
得到射線p(t)=p0+tu


Unity Raycast API

public static bool Raycast(Vector3 originVector3 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,兩不相交

沒有留言:

張貼留言