2017-08-10 95 views
1

三角:如何找到一個點是否在三角形內?

A:(-538.10,-41.64)

B:(-544.67,-57.29)

C:(-553.75,-35.07)

點檢查:

P1:(-548.20, -45.77)

P2:(-553.00,-30.60)

我已經知道P1是內部和P2在外面,但我試圖找出一個公式通過提供解決這個△ABC座標和一個點並返回true/false。

通過圍繞一個可愛,我發現這個(不LUA)挖:

function ptInTriangle(p, p0, p1, p2) { 
    var A = 1/2 * (-p1.y * p2.x + p0.y * (-p1.x + p2.x) + p0.x * (p1.y - p2.y) + p1.x * p2.y); 
    var sign = A < 0 ? -1 : 1; 
    var s = (p0.y * p2.x - p0.x * p2.y + (p2.y - p0.y) * p.x + (p0.x - p2.x) * p.y) * sign; 
    var t = (p0.x * p1.y - p0.y * p1.x + (p0.y - p1.y) * p.x + (p1.x - p0.x) * p.y) * sign; 

    return s > 0 && t > 0 && (s + t) < 2 * A * sign; 
} 

但是,我不能環繞這意味着什麼都我的頭......

+1

我認爲這個老問題可以幫助:[如何確定一個點是否在一個二維三角?](https://stackoverflow.com/questions/2049582/how-to-determine-if-a-point-是-IN-A-2D-三角形) –

回答

1

你知道的價值只是x或只是y必須是<兩項或者>兩項而不是>三項或者<三項。

如果您>兩項但小於x的三個座標中的1,則知道您在x值之間。如果這對x和y適用,那麼你就在三角形內。

相關問題