如下圖所示,已知四個(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