如何在Matlab中绘制圆?

6
我想知道如何在Matlab中绘制圆,已知其圆心和半径?我尝试了circles(),但它似乎不起作用,因为我的Matlab版本没有它。我知道可以使用Rectangle函数来完成此操作,但这是一种相对复杂的方法,因为每次都需要计算最左侧的点。
难道没有更简单的方法可以仅仅通过圆心和半径来绘制一个圆吗?

是的,肯定有 -- 但你没有告诉我们你正在使用哪种图形类型。你很可能只需要使用离散的x、y坐标,这些坐标可以通过rsin(theta)、rcos(theta)、theta在0到2pi之间获得。 - Marcus Müller
你能展示或写下你的意思吗?@MarcusMüller - Hannah
2个回答

24
不要笑,最简单的方法是使用rectangle函数。
%// radius
r = 2;

%// center
c = [3 3];

pos = [c-r 2*r 2*r];
rectangle('Position',pos,'Curvature',[1 1])
axis equal

但将矩形的曲率设置为1

position向量定义了矩形,前两个值xy是矩形的左下角。最后两个值定义了矩形的宽度和高度。

pos = [ [x y] width height ]

你的圆的左下角 - 是的,这个圆有角,虽然是想象中的 - 是中心c = [3 3] 减去半径r = 2得到的[x y] = [1 1]宽度高度等于圆的直径,因此width = 2*r; height = width; enter image description here 如果你不喜欢上面解决方案的平滑性,则无法避免使用三角函数来绘制实际的圆形。
%// number of points
n = 1000;

%// running variable
t = linspace(0,2*pi,n);

x = c(1) + r*sin(t);
y = c(2) + r*cos(t);

%// draw line
line(x,y)

%// or draw polygon if you want to fill it with color
%// fill(x,y,[1,1,1])
axis equal

enter image description here


太好了!你能解释一下2r 2r的目的是什么吗?@thewaywewalk - Hannah
你想要画一个给定半径的圆。但是你的“矩形圆”是由直径定义的,即 d = 2*r - Robert Seifert
1
@thewaywewalk 这是一个圆角矩形还是一个矩形圆?;) 太棒了! - Shai
1
@Shai,我不知道,但我保证会进行一些研究。 - Robert Seifert
不错!有没有办法增加点数?结果看起来有些多边形。 - A. Donda
这实际上非常有趣。+1。 - rayryeng

3
如果你想要一个不是矩形的圆形,你可以使用注释
center = [3, 4];
r = 2;
pos = [center-r, 2*r 2*r];
annotation('ellipse', pos );

1
这到底应该如何工作?我遇到了一个错误,因为默认单位是“归一化”的,而pos的值必须小于1。但是我想不出其他设置单位的方式,它能够适配到坐标轴上。 - Robert Seifert
“注解”使用图形坐标,而不是轴坐标。 - Girardi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接