阵列中的四个2D点.我需要按顺时针顺序对它们进行排序.我认为只需一次交换操作即可完成,但我无法正式解决这个问题.
编辑:在我的情况下,四个点是凸多边形.
编辑:四个点是凸多边形的顶点.他们不需要整理好.
我正在尝试制作一个地图,用户可以在其中勾勒出他们想要的任何形状.但我遇到的问题是,用户可以选择使多边形线交叉的点,并排除我想要包含的区域.
要查看我在说什么,请转到此页面并执行以下步骤:
你应该看到这样的东西:
替代文字http://polygon.abemiester.com/1.bmp
有没有一种简单的方法来解决这个问题,或者我基本上处理的是"旅行推销员"类型的情况?所有的逻辑都是用javascript完成的,所以如果你想看看我是怎么做的,请随意"查看源代码".
我正在谷歌地图中通过可以拖动来重塑它的标记来构建多边形.因此,当有3个标记时,绘制多边形,并在形状中附加其他标记,将其展开.当用户只想遵循一个简单的顺时针/逆时针模式时,这很好,但是当他想要通过其中一个边缘扩展多边形时,它会附加标记,扭曲自身.

在这个例子中,如果我们添加标记1,2和3,它将绘制一个简单的三角形.但是如果添加了标记4,则多边形只会自行扭曲.
相反,我希望当添加4时,它会插入标记1和2之间,如下图所示:

基本上,在多边形的顶点数组中,而不是:
[
//marker 1 position,
//marker 2 position,
//marker 3 position,
//current marker 4 position
]
Run Code Online (Sandbox Code Playgroud)
我希望有:
[
//marker 1 position,
//desired marker 4 position
//marker 2 position,
//marker 3 position
]
Run Code Online (Sandbox Code Playgroud)
因此多边形将扩展而不是扭曲本身.
有没有办法实现这个目标?或者我只需要告诉用户构建他的多边形时钟/逆时针?
google-maps ×2
polygon ×2
sorting ×2
algorithm ×1
convex-hull ×1
edge ×1
geometry ×1
graphics ×1
javascript ×1