我有几个与曲线对应的数据x0
和y0
。它包含8个点,例如:K(x0(2),y0(2))
。
问题在于,当我像这样绘制x0
和y0
时:
plot(x0,y0,'c*');
plot(x0,y0,'k');
我把青色点放在一个好地方,但曲线很乱。检查屏幕截图:
我可以做某种Sorting
吗?
这个问题看似简单,但我是新手。
答案 0 :(得分:3)
由于这些点定义了凸多边形,因此您只需使用convhull
- 函数即可。 convhull
返回x0
和y0
中最外点的索引。对于这个问题,我们利用它们在船体周围逆时针排列,所以你可以很好地绘制它们。
h = convhull(x0,y0);
plot(x0(h),y0(h),'k');
结果如下:
用于生成输出的点:
x0 = [1 2 3 4 4 3 2 1];
y0 = [2 3 0 2 1 3 0 1];
答案 1 :(得分:0)
如果您有Mapping Toolbox,函数poly2ccw
也会为您执行该任务。 Convex Hull是一种更通用的算法,用于处理任何凸多边形。如果你已经有了形状的四肢,你可以简单地使用重新排序的poly2ccw
返回坐标,这样你就可以按逆时针顺序绘制形状的周长。
具体来说,你会这样做:
[x1, y1] = poly2ccw(x0, y0);
x1
和y1
将包含x0
和y0
的混洗点,以便它们现在按逆时针顺序排列。然后,您可以通过以下方式绘制它们:
plot(x1, y1, 'k');