3 回答

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
矩形如何顯示?三分?四分?點(diǎn),邊和角度?一分兩分?還有嗎 不知不覺(jué)中,任何回答您的問(wèn)題的嘗試都將僅具有學(xué)術(shù)價(jià)值。
在任何情況下,對(duì)于任何凸多邊形(包括矩形)的測(cè)試是非常簡(jiǎn)單的:檢查多邊形的每個(gè)邊緣,假設(shè)每個(gè)邊緣在反時(shí)針?lè)较虮蝗∠?,并測(cè)試點(diǎn)是否位于向左的邊緣的(在左-手半平面)。如果所有邊緣均通過(guò)測(cè)試,則該點(diǎn)在內(nèi)部。如果至少有一個(gè)失敗-該點(diǎn)在外面。
為了測(cè)試該點(diǎn)是否(xp, yp)位于邊緣的左側(cè)(x1, y1) - (x2, y2),您只需要計(jì)算
D = (x2 - x1) * (yp - y1) - (xp - x1) * (y2 - y1)
如果為D > 0,則該點(diǎn)在左側(cè)。如果為D < 0,則該點(diǎn)在右側(cè)。如果為D = 0,則該點(diǎn)在線上。
該答案的先前版本描述了左側(cè)測(cè)試的看似不同的版本(請(qǐng)參見(jiàn)下文)。但是可以很容易地證明它計(jì)算出相同的值。
...為了測(cè)試點(diǎn)是否(xp, yp)位于邊緣的左側(cè)(x1, y1) - (x2, y2),您需要為包含邊緣的線構(gòu)建線方程。公式如下
A * x + B * y + C = 0
哪里
A = -(y2 - y1)
B = x2 - x1
C = -(A * x1 + B * y1)
現(xiàn)在您要做的就是計(jì)算
D = A * xp + B * yp + C
如果為D > 0,則該點(diǎn)在左側(cè)。如果為D < 0,則該點(diǎn)在右側(cè)。如果為D = 0,則該點(diǎn)在線上。
但是,該測(cè)試同樣適用于任何凸多邊形,這意味著它對(duì)于矩形可能太通用了。矩形可能允許更簡(jiǎn)單的測(cè)試...例如,在矩形(或任何其他平行四邊形)中,的值A(chǔ)和值B具有相同的大小,但相對(duì)(即平行)邊緣的符號(hào)不同,可以利用該值簡(jiǎn)化測(cè)試。
添加回答
舉報(bào)