回复 5楼 九转星河
通用的
列举垂直方向的 交点
假设
与 m 条线段有交点 m 个
交点分别为(x, y1),(x,y2) 。。。 (x, ym)
通过 排序 可以满足
y1 < y2 < ... < ym
现在就是区分 (x, y1) 到 (x, y2)之间这段, 即相邻的2点连线 是否需要范围内还是外
可以给这些排好序的交点 加上一个附加属性, 方向性,
例如, 第一个顶点(x, y1)
当 (x, y1) 不属于 多边形的顶点 则方向定位
外->内,
当 (x,y1)属于多边形的顶点 则方向定为(顶点); 第二个顶点(x,y2) 当(x, y2)不属于 多边形的顶点 则方向定位,依赖前一个(x,y1)
的方向, 如果(x, y1)为 外->内, 则(x, y2)定位 内到外, 否则定为 外->内, 如果(x,y2)属于多边形的顶点,则方向定位(顶点);
总结, 交点的方向是交替的 先是(外->内) 然后 再是 (内->外) ,这样子循环的, 但是
这些属性的交点间 可以随意穿插 交点方向为(顶点) 的点。
然后就是方向的识别(两点连线是否属于多边形范围内)
1、(外->内) 连 (内->外) 属于 范围内
2、(外->内) 连 (顶点)
属于 范围内
3、 (顶点)连 (顶点) 属于范围 依赖 上次识别的范围属性 如果 没有上次的状态
即为(表示 第一个和第二个点都是 顶点) 范围外
4、 (顶点)连 (外->内) 属于范围外
5、 (顶点)连 (内->外) 属于方位内
6、 (内->外)连 (外->内) 属于 范围外
7、 (内->外)连 (顶点) 属于 范围外
然后就是进行 y 范围的对比了。 y 落在什么范围就是 就可以直接看出这个点属不属于 多边形的范围了
[此贴子已经被作者于2017-4-3 00:41编辑过]