一个二维坐标数组如何按逆时针或顺时针排序?

mynameysh 2010-07-23 01:10:57
有一个二维坐标数组DPoint:array of TPoint,其数据已知,如:
X / Y
311/142
313/142
311/143
313/143
310/144
312/144
310/145
312/145
310/146
312/146
311/147
313/147
311/148
312/148
313/148
313/149
313/150
但这些坐标不是按多边形顶点顺序排列的,怎么排序才可以供POLYGON绘制多边形时使用?谢谢各位了!
...全文
1569 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mynameysh 2010-08-04
  • 打赏
  • 举报
回复
谢谢楼上的所有人,还没找到更好的方法,可能要去请教数学高手了:)
zuuzhang 2010-08-03
  • 打赏
  • 举报
回复
帅哥,你找到方法了吗??
我也碰到类似的问题了
haitao 2010-08-01
  • 打赏
  • 举报
回复
理论上完全可能出现所有点的x值都不重复的
y值也一样
lyhoo163 2010-08-01
  • 打赏
  • 举报
回复
建议使用深度搜索法,对上述点进行排序。条件是只要两相邻点之连线,不穿插其它两点间的连线,......,直到找到一种排序方式。
麦客来了 2010-07-24
  • 打赏
  • 举报
回复
先对X进行升序,然后针对X值相同的点对Y进行升序排列就生成顺时针排列了;先对X进行降序排列,然后针对X值相同的点对Y进行降序排列就生成逆时针排列了。
haitao 2010-07-24
  • 打赏
  • 举报
回复
凹多边形 是无法确定下一个顶点的吧
如4个顶点:
a b
c d
既可以是abcd,也可以是acbd

mynameysh 2010-07-23
  • 打赏
  • 举报
回复
谢谢两位。关键是可能是凸多边形也可能是凹多边形,斜率排序可能无法完成。
SQLDebug_Fan 2010-07-23
  • 打赏
  • 举报
回复
这个问题是要找到计算的算法。
haitao 2010-07-23
  • 打赏
  • 举报
回复
因为是凸多边形,任何2顶点之间的任何一点,都可以作为p
haitao 2010-07-23
  • 打赏
  • 举报
回复
先确定一个中心p,然后计算p与各点的折线斜率,按斜率排序

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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