2014-03-03 66 views
0

我大多不熟悉矢量,所以想知道我是否可以在這裏得到一些幫助。家庭作業 - 在2D空間中交叉積分3分

我正在2d空間中進行凸包工程。我正在處理的特定功能需要確定一個點位於行左邊,右邊還是直接位於行上。

我被告知要使用交叉產品來做到這一點。這三點在二維空間中創建了一個三角形。計算交叉產品應該給我三角形的面積。如果面積爲正,點p-> q-> r逆時針工作,這意味着點r位於線p-q的左側。同樣,如果面積爲負值,點p-> q-> r順時針方向運行,點r位於線p-q的右側。如果面積爲0,則r位於線p-q上。

我知道如何處理最終結果,我只是不知道我應該使用什麼公式。

我的問題是我對跨產品不熟悉,而且我所做的研究沒有闡明如何用3分做到這一點。我的直覺是,這與使用2個向量的過程相同,但如果是這種情況,我不知道如何將我的3個點轉換爲2個向量。

非常感謝!

+0

這個問題似乎是題外話題,因爲它是關於數學,並且與編程幾乎沒有關係。請參閱http://math.stackexchange.com/。 – Vache

+0

請注意,叉積定義在向量之間而非點。對於三點,您可以在其兩邊聲明兩個向量,如下面由Martin R給出的答案。 –

+0

@Vache我的歉意,這將是一個更好的地方,把這個。 – bumbleBumble

回答

2

你的三角形有邊q-pr-p,所以你必須計算

(q - p) x (r - p) 

其中a x b決定

a x b = (a.x * b.y - a.y * b.x) 

有時被稱爲 「2維積」 (例如參見 http://mathworld.wolfram.com/CrossProduct.html)。

+0

所以如果p =(1,4); q =(2,5); r =(3,6);它會是a =(1,1)和b =(2,2)?因此,a x b =(1 * 2 -1 * 2)=(2-2)= 0?也許我的隨機數字不是很理想,如果它是0,但是這個過程是否正確? – bumbleBumble

+0

@bumbleBumble:這是正確的。這三點是一條直線,因此結果爲零。 –

+0

非常感謝!這就說得通了。 – bumbleBumble