这更像是一个几何问题,但是 我有一个4点(来自用户输入)的数组,可以是任何顺序 我正在尝试制定一个可以返回每个点可能的程序,即
top left,
top right,
bottom left,
bottom Right
我现在正在使用PHP,但任何语言的帮助都很好。
{'我很快就会在PHP中添加到目前为止}}
在另一个stackexchange上问这个问题会更好吗,数学可能吗?
答案 0 :(得分:0)
您可以先垂直对点进行排序,然后调出前2点前点和下2点下点。然后水平对点进行排序,并将最右边的两个点调到右边,另外两个点左边。现在你有一个。
答案 1 :(得分:0)
您可以按x的坐标升序对点进行排序,如果有平局,则y坐标递增。
前两个点是“左”侧 - y较大的一个是“顶部”而另一个是“底部”。
最后两点是“正确的”,同样的交易。
这不适用于钻石! (但是,无论如何,钻石上的“左上角”是什么?)
通常,对于凸点集,您可以计算质心(x值是所有x值的平均值,y值是所有y值的平均值)。
然后,您可以计算质心和点之间的直线的参数(即角度),(y_pt-y_centroid,x_pt-x_centroid)
为arctan2
。
如果你按照他们的参数对点进行排序,它们将是逆时针顺序,-pi是指南针的西点,0是东方,再次环绕到+ pi是西点。
答案 2 :(得分:0)
x值最低的两个点组成左侧,另外两个组成右侧。
同样适用于y和top / bottom。