1、向量叉乘法
2、射线法原理
射线法是判断点与多边形位置关系的经典算法,核心思想是:
从目标点发出一条水平向右的射线(数学上可视为 y = p_y, x \geq p_x 的射线),统计该射线与多边形边的交点数量:
- 偶数次(含0次)相交:点在多边形外部
- 奇数次相交:点在多边形内部
- 点在边上:直接判定为内部或边界(根据需求处理)
关键边界处理
1. 边为水平线段( y_1 = y_2 = p_y ):
射线与边重合,若点在边上则直接判定为边界,否则忽略(不计数)。
2. 点正好是多边形顶点:
若顶点的两个相邻边分别在射线上下两侧,则计为1次交点;否则不计(避免重复计数)。
3. 射线经过边的顶点(非目标点):
仅当该顶点是边的“下端点”(即另一顶点 y > p_y )时,计为1次交点(采用“左闭右开”规则避免重复)。
CAD环境下的实现(基于AutoCAD API)
假设使用 Autodesk.AutoCAD.DatabaseServices 中的 Polyline 和 Point3d 类型,且所有点的 Z=0 (XY平面)。
usi