我想檢查一個圓是相交還是位於凸多邊形的內部。我發現了一個輝煌的方法來檢測一個點是多邊形內(從here):如何檢查一個圓是否位於凸多邊形的內部
public boolean insidePolygon(Vector2 [] vertices, Vector2 p)
{
int i, j;
boolean c = false;
int nvert = vertices.length;
for (i = 0, j = nvert - 1; i < nvert; j = i++)
{
if (((vertices[i].Y > p.Y) != (vertices[j].Y > p.Y)) &&
(p.X < (vertices[j].X - vertices[i].X) * (p.Y - vertices[i].Y)/(vertices[j].Y - vertices[i].Y) + vertices[i].X))
c = !c;
}
return c;
}
這完全適用於單點,但有什麼辦法,我們可以修改這個檢查,如果有一個圓給定的半徑是在多邊形內?我想這是可能的,因爲一個圓實際上是一個點,但更大,但我還沒有設法取得成功......
幾何上圓是重點**不**只是「一個點,但更大」。一個點有零維,一個圓有兩個維。你的問題有點類似於光線追蹤「射線球面相交」測試,其中多邊形邊緣類似於射線 - 嘗試着看。 – Alnitak 2014-09-06 14:48:56
目前我正在處理圓圈相交併且分別位於內側的情況。我只是好奇,如果這種方法可以以某種方式擴展到一次覆蓋兩種情況。但我必須承認,我的說法「圈子就像一個點」有點幼稚...... – Savail 2014-09-06 14:59:59
我認爲這可能取決於你的多邊形是否保證是凸包或不。啊 - 我看到你在問題中這麼說......嗯。 – Alnitak 2014-09-06 15:08:40