我正在尝试在凸包中以原点为中心绘制一个圆。我已经附上了生成点和凸包的代码。以哪种方式可以生成以原点为中心的圆。
main
试图像这样刻一个圆圈。以其中心为原点。 (用油漆编辑的图形,而不是Matlab)
答案 0 :(得分:0)
找到中心(原点)到所有边缘的最小距离并绘制圆。
clear all;
A=[0 0;0 -5; 5 -5; 5 5;0 5;-2 2;-5 -5;5 8;-5 -8;-8 0;8 0]
x_axis=A(:,1)
y_axis=A(:,2)
k=convhull(x_axis,y_axis);
figure;
hold on
plot(x_axis(k),y_axis(k),'r-',x_axis,y_axis,'b*');
Centre = [0 0 0];
ConvexHull = [x_axis(k) y_axis(k) zeros(size(k))];
radius = Inf;
for i = 1:size(k)-1
radius = min(radius,Distance(Centre, ConvexHull(i,:), ConvexHull(i+1,:)));
end
radius = min(radius,Distance(Centre, ConvexHull(1,:), ConvexHull(size(k),:)));
viscircles([0 0],radius);
function d = Distance(pt, v1, v2)
a = v1 - v2;
b = pt - v2;
d = norm(cross(a,b)) / norm(a);
end
如果轴的比例尺不同,则添加axis equal
。