如何判断多段线的绘制方向

gis_99 2015-03-02 02:16:49
在AutoCAD或arcgis desktop中,如何判断多段线或面的方向是逆时针方向还是顺时针方向?
...全文
1071 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
招招有情 2018-12-04
  • 打赏
  • 举报
回复
沿着前进方向计算内角和,内角和=(点数-2)*180时为顺时针,内角和=(点数)*180时为逆时针。
招招有情 2018-12-04
  • 打赏
  • 举报
回复
没这么复杂,内角和=点数*180为逆时针,内角和=(点数-2)*180为顺时针
gis_99 2015-03-06
  • 打赏
  • 举报
回复
感谢 於黾 的分析。 我通过多边形的每个节点的向量积,来综合判断多边形的方向。 大体上可以解决,还有个别特例需要考虑。
於黾 2015-03-05
  • 打赏
  • 举报
回复
循环要一直循环到连线了一周,却没有删掉任何一个点为止
於黾 2015-03-05
  • 打赏
  • 举报
回复
其实就是局部和整体的区别 你的图2,在局部,它确实是逆时针的,但是整体上,它是顺时针的 而所谓局部,其实就是落在外接凸多边形内部的点 可以循环将多边形的各个点每间隔一个连线,如果发现连线后,被排除的点落在多边形的外面,则这个点保留,落在图形内部,则这个点删掉 最终得到一个完全的凸多边形,再判断方向
wyx100 2015-03-05
  • 打赏
  • 举报
回复
引用 1 楼 Z65443344 的回复:
多段线在绘制的过程是有顺序的,绘制完了它没有方向,就是个曲线 好比你画线的时候,从A画到B和从B画到A,它都是同一条线段,不存在朝左或朝右的问题
於黾 2015-03-05
  • 打赏
  • 举报
回复
其实就是跟我用4个点举例一样 图形最外围的点决定了方向,而落在内部的点不影响方向 所以关键问题就是如何判断哪些点是"无效"的 如果你的图形都是这样水平的或垂直的,就好办了 如果是任意角度的,那判断起来太复杂了
gis_99 2015-03-05
  • 打赏
  • 举报
回复
多边形有凸、凹之分,还有别的可能性,所以通过三个点是无法判断的。



上面这两个图形,开始绘制的顺序一致,上面的是逆时针,下面的是顺时针。
我在想有什么算法,或逻辑可以根据点集合来判断。
於黾 2015-03-05
  • 打赏
  • 举报
回复
不说太复杂的, 先考虑4个点 如果是凸四边形,可以取任意3个点求方向 如果是凹四边形,单纯从其中3个点判断就不对了,得先判断哪个点是落在外接三角形内部的,把它排除掉 如果是N多个点,要求得最外围的其中3个点,这个算法本身就够复杂的
gis_99 2015-03-05
  • 打赏
  • 举报
回复
你说的很好,如果仅3个点,可以通过向量积来判断。 这里多多段线、面是有要求的,不能自己交叉。 要不准确判断的难度增加很大。
於黾 2015-03-05
  • 打赏
  • 举报
回复
如果只有3个点,可以根据坐标判断方向 如果点很多,算法就会异常复杂了 而且考虑到如果画了个8字,它算什么方向,这就根本是无解了
gis_99 2015-03-05
  • 打赏
  • 举报
回复
我cad或arcgis中,选择线、面可以把角点坐标按顺序保存在数据库中的一个字段里。


这是点号。
坐标会存在别的字段里。


由点号构成的点集合,这时候存在是顺时针绘制还是逆时针绘制。
於黾 2015-03-04
  • 打赏
  • 举报
回复
多段线在绘制的过程是有顺序的,绘制完了它没有方向,就是个曲线 好比你画线的时候,从A画到B和从B画到A,它都是同一条线段,不存在朝左或朝右的问题

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧