【发布时间】:2011-10-06 11:16:55
【问题描述】:
让我们拿分吧。
pt={{-4.65371,0.1},{-4.68489,0.103169},{-4.78341,0.104834},{-4.83897,0.100757},
{-4.92102,0.0949725},{-4.93456,0.100181},{-4.89166,0.122666},{-4.78298,0.129514},
{-4.72723,0.121442},{-4.68355,0.11023},{-4.65371,0.1},{-4.66924,0.10173},
{-4.93059,0.0966989},{-4.93259,0.105094},{-4.91074,0.116966},{-4.90635,0.094878},
{-4.66846,0.105327},{-4.92647,0.0956182},{-4.93433,0.102498},{-4.9333,0.0982262},
{-4.66257,0.10102}};
现在它们处于一定的顺序(对我来说是一种混乱!)如果我们查看ListLinePLot 可以看出这一点
picUnorder=ListLinePlot[pt,Frame-> True,Mesh-> All,MeshStyle-> PointSize[Large]];
SeepicUnorder=ListLinePlot[pt,Frame-> True,Mesh-> All,MeshStyle->
PointSize[Large]]/.Line[rest_]:>{Arrowheads[Table[0.02,{i,0,1,.02}]],Arrow[rest]};
GraphicsGrid[{{picUnorder,SeepicUnorder}}]
但我们需要像下图那样订购它们。
有没有人建议一种算法以逆时针方向对此类二维点进行排序,以便我们可以重新排列点列表以创建像最后一张图片一样的几何图形,只需在重新排列的点上使用ListLinePlot? ?
使用 suggestion 我们会得到如下结果。
center=Mean[pt];
pts=SortBy[pt,Function[p,{x,y}=p-center;ArcTan[x,y]]];
Show[ListPlot[pt],ListLinePlot[pts,Mesh-> All,MeshStyle->
PointSize[Large]],Frame-> True]
BR
【问题讨论】:
-
"顺时针"需要一个中心和一个空间方向......问题是中心......
-
请允许我提醒一下我们通常在这里做的三件事:1) 当您获得帮助时,请尝试在您的专业领域回答问题 2)
Read the FAQs3) 当你看到好的问答时,给他们投票using the gray triangles,因为系统的可信度是基于用户通过分享他们的知识而获得的声誉。还记得接受更好地解决您的问题的答案,如果有的话,by pressing the checkmark sign -
谢谢@belisarius,我会尽力遵循建议。顺便说一句,您认为
FindShortestTour的答案对一般凹点簇有效吗? -
没有,但我认为您不会找到通用解决方案
标签: sorting wolfram-mathematica