如何確定一個(gè)點(diǎn)在可旋轉(zhuǎn)的矩形區(qū)域內(nèi)?

如下圖所示,已知四個(gè)點(diǎn)A,B,C,D的坐標(biāo)分別是(x1,y1),(x2,y2)(x3,y3),(x4,y4),如何確定任意一個(gè)點(diǎn)(x,y)是否在這個(gè)A、B、C、D四個(gè)點(diǎn)組成的矩形區(qū)域以內(nèi)?

示意圖

部分思路

面積法

思路說(shuō)明:假設(shè)任意點(diǎn)為M(x,y)。如果點(diǎn)M在區(qū)域內(nèi),那么必然有四個(gè)三角形面積S△AMB+S△BMC+S△CMD+S△DMA等于矩形ABCD的面積。特別的,如果這四個(gè)中只要有一個(gè)三角形的面積為0,意味著點(diǎn)M處在某一條邊上,比如S△AMB=0則說(shuō)明M位于線段AB上,如果加起來(lái)的值大于了矩形面,說(shuō)明在矩形區(qū)域外。這種方法對(duì)任意的不規(guī)則多邊形適用,但是需要大量的計(jì)算。

垂直線段法

計(jì)算點(diǎn)到直線AB、CD、AD、BC的距離之和,如果等于AB到CD的距離加上AD到BC的距離則在區(qū)域內(nèi),如果大于則在區(qū)域外。

點(diǎn)積

滿足條件 (0<AM?AB<AB?AB)∧(0<AM?AD<AD?AD)
其中AM為向量(x-x1,y-y1)AB為向量(x2-x1,y2-y1),AD為向量(x4-x1,y4-y1)

參考鏈接:
https://math.stackexchange.com/questions/190111/how-to-check-if-a-point-is-inside-a-rectangle
https://stackoverflow.com/questions/2752725/finding-whether-a-point-lies-inside-a-rectangle-or-not

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容