多边形顶点按方向重新排序
-
初始化多边形顶点集合
outerPoints
- 创建一个名为
outerPoints
的List<Point2d>
,用于存储多边形的所有顶点坐标。
- 创建一个名为
-
计算多边形顶点集合的边界框(BoundingBox)
- 使用LINQ的
Aggregate
方法遍历整个outerPoints
列表,并逐个更新最小X、最大X、最小Y和最大Y值。 - 初始化匿名对象,其中包含四个属性:MinX、MaxX、MinY、MaxY,分别设置为double的最大值和最小值。
- 对于列表中的每个顶点,将当前顶点的X和Y坐标与匿名对象中对应的最小值或最大值进行比较并更新。
- 使用LINQ的
-
找到左上角(候选西北角)
- 根据计算得到的边界框信息,创建一个新的
Point2d
对象topLeftCorner
,其坐标分别为边界框的最小X值和最大Y值。这个点位于多边形顶点集合的左上角,作为候选的西北方向起始点。
- 根据计算得到的边界框信息,创建一个新的
-
查找最接近左上角(西北方向)的顶点索引
- 对
outerPoints
中的所有顶点按照它们到左上角顶点的距离平方进行排序,距离越近排在越前面。 - 调用
IndexOf
方法找出排序后序列的第一个元素(即最
- 对