我怎样画一个给定半径和圆心的圆?

8,590视图(最近30天)
我想画一个给定半径和中心的圆。

接受的答案

Mathworks支万博1manbetx持团队
下面是一个MATLAB函数,它绘制一个半径为'r'的圆,并将圆心定位在坐标'x'和'y'上:
功能h =圆(x, y, r)
持有
th=0:pi/50:2*pi;
Xunit = r * cos(th) + x;
Y单元= R * SIN(TH)+ Y;
h=绘图(xunit,yunit);
持有离开
另一种方法是使用“矩形”函数:
功能h = circle2 (x, y, r)
d = r * 2;
px = x r;
PY = Y-R;
h =矩形(“位置”,[px-py-d],“弯曲”[1]);
daspect ((1 1 1))
如果您使用的版本R2012a或更高版本,并有图像处理工具箱,那么你可以使用“viscircles”功能,以画圈圈:
viscircles(中心、半径)
15评论

登录评论。

更多答案(7)

serwan Bamerni
serwan Bamerni 2016年2月17日
现在有一个名为viscircles()的函数:
3评论
沃尔特·罗伯森
沃尔特·罗伯森 在2020年12月25日
viscircles(app.segmented,中心,半径,“颜色”“b”

登录评论。


Supoj Choachaicharoenkul
Supoj Choachaicharoenkul 2019年10月2日
plot(x, y, 'bo', ' marksize ', 50);
1评论
wagenaartje
wagenaartje 2020年12月7日
如果您想突出显示图中的某些部分,这是目前为止最好的解决方案

登录评论。


史蒂文的主
史蒂文的主 在2020年12月25日
另一种可能是用a来近似圆 polyshape 有很多边,然后画出来 polyshape
p = nsidedpoly (1000“中心”[2 3],“半径”5);
情节(p,“FaceColor”“r”
平等的
3评论

登录评论。


胺bouabid
胺bouabid 2018年7月23日
编辑:胺bouabid 2018年7月23日
你好
您可以通过编写简单的绘制一个圆:
SYMSx;SYMSy
ezplot((X-11)。^ 2 +(Y基)。^ 2-R ^ 2)
其中xi和yi是中心的坐标,r是半径
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年5月9日
使用viscircles()或使用带有'o'标记和大'MarkerSize'的plot()更短。

登录评论。


Devin Marcheselli
Devin Marcheselli 2020年1月17日
我如何使用等式绘制圆圈:。(X-H)^ 2 +(Y-K)^ 2 = R ^ 2
3评论
马克·瑞兹尼基
马克·瑞兹尼基 2020年3月17日
很遗憾,我刚刚才看到,抱歉。
要做到这一点最简单的方法会一直写的原代码的两倍(重命名变量,第二次)和“暂停”的声明绘制用两个圆。
这使得代码看起来非常难看——在这样扩展代码时,您真的应该将事情矢量化并定义函数——但这将在必要时完成这项工作。结果如下所示(5分钟编辑我的原始代码):
%圆方程:(X-H)^ 2 +(Y-K)^ 2 = R ^ 2
%中心:(H,K)半径:R t
h = 1;
k=1;
r=1;
h1 = 2;
k1 = 2;
r1 = 2;
在x坐标中,圆从h-r开始,到h+r结束
点之间%% x_res =分辨率间距
XMIN = H - R等
XMAX = H + R;
x_res = 1 e - 3;
X = xmin: x_res: xmax;
Xmin1 = h1 - r1;
Xmax1 = h1 + r1;
X1=xmin1:x_res:xmax1;
对于大多数的x坐标,圆上有两个y坐标。
%%我们需要复制每个x坐标,以便我们可以将每个x与
%%它的y值对。
方法选择:当圆“绕圈”时,重复x坐标
例如:x =[0 0.1 0.2…]结束结束……0.2 - 0.1 0]
N =长度(X);
x = [x翻转(x)];
N1 =长度(X1);
x1=[x1翻转(x1)];
%% ytemp1:当我们沿着圆从左到右扫视时y值的向量
%% ytemp2:y值向量作为我们沿着圆圈从右到左扫
我们先取正数还是负数是任意的
ytemp1 = 0 (1, N);
ytemp2 = 0 (1, N);
ytemp11 =零(1,N1);
ytemp22=零(1,N1);
我= 1:1:N
正方形= SQRT(R ^ 2 - X(ⅰ)^ 2 + 2 * X(I)* H - H ^ 2);
Ytemp1 (i) = k -平方;
ytemp2(N+1-i) = k +平方;
结束
我= 1:1:N1
sqare1 =√(r1^2-X1(i)^2 + 2*X1(i)*h1 - h1^2);
Ytemp11 (i) = k1 - square1;
ytemp22(i)=k1+平方1;
结束
Y = [ytemp1 ytemp2];
Y1 = [ytemp11 ytemp22];
%%绘制(x,y)点
图(1)
情节(x, y)
持有
情节(x1, y1)
轴([-5 5 -5]);

登录评论。


Ebrahim Soujeri
Ebrahim Soujeri 2021年3月26日
最短的代码,它可能是这样的:
功能plotcircle (r, x, y)
th = 0:π/ 100:2 *π;
F = r * exp(j*th) + x+j*y;
情节(真正的(f),图像放大(f));
3评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年3月27日
但是请注意,我使用了绘制单个变量的快捷方式,而不是表达式的real()和imagg()。这是一个阴谋的“特性”:如果你问情节()单一变量和变量是复杂的价值,然后使用真正的组件作为x和虚构的组件y。删除临时变量使代码更加紧凑,但改变情节()只有一个表达式是使用不同的算法比你使用。
.. 和你 做了 说“最短”,但我对你的做法的版本更短;-)

登录评论。


帕特里夏阿基拉
帕特里夏阿基拉 2021年5月4日
对象在半径为1的圆上移动。绘制此圆并以67º的角度放置一个点。请帮助我
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年5月4日
对于67度,请注意,在
Xunit = r * cos(th) + x;
Y单元= R * SIN(TH)+ Y;
你可以使用COSD()和信德()如果你的角度是在度。

登录评论。

s manbetx 845

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始打猎吧!