检查区域内是否有点(x,y)的算法?

An algorithm for check if a dot(x,y) in inside an area?

假设这张图片中的每条黑线都可以描述为一个方程 y = Ki*x + Mi 其中 Ki 是 i:th 斜率,Mi 是 i:th 直线方程的偏差。我也知道每一个角落的线条。

蓝色的是我的数据。我的问题是我想选择一个坐标为 x,y 的点并将其放置在线条创建的区域内,然后我将返回 YESNO .

但我不知道该怎么做。我的问题是:这个问题有算法吗,还是我必须用很多if-statements来解决这种area问题?

检查 (y - Ki * x - Mi) 的符号对于所有底边都是正的,对于所有顶边都是负的。

对于N个边,这恰好是N个测试:-)


如果您不知道哪个是底部和顶部边缘,您可以测试符号是否与已知位于内部的任何点相同。