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

8,503次浏览(过去30天)
我想画一个给定半径和圆心的圆。

接受的答案

MathWorks支金宝app持团队
下面是一个MATLAB函数,它绘制一个半径为'r'的圆,并将圆心定位在坐标'x'和'y'上:
函数h =圆(x, y, r)
持有
th = 0:π/ 50:2 *π;
Xunit = r * cos(th) + x;
Yunit = r * sin(th) + y;
H = plot(xunit, yunit);
持有
另一种方法是使用“矩形”函数:
函数h = circle2 (x, y, r)
d = r * 2;
px = x r;
py = y r;
h =矩形(“位置”,[px py d d],“弯曲”[1]);
daspect ((1 1 1))
如果你使用的是R2012a或更高版本,并且有图像处理工具箱,那么你可以使用'viscircles'函数来画圆:
viscircles(中心、半径)
15个评论

登录评论。

更多的答案(7)

serwan Bamerni
serwan Bamerni 2016年2月17日
现在有一个名为viscircles()的函数:
3评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年12月25日
viscircles(应用程序。分段,中心、半径、“颜色”“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“中心”3 [2],“半径”5);
情节(p,“FaceColor”“r”
平等的
3评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年6月9日
记住等边三角形的范围是60度。

登录评论。


胺bouabid
胺bouabid 2018年7月23日
编辑:胺bouabid 2018年7月23日
你好
你可以简单地这样写:
信谊x;信谊y
ezplot ((x-xi)。^ 2 + (y-yi)。^ 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评论
马克Rzewnicki
马克Rzewnicki 2020年3月17日
很遗憾,我刚刚才看到,抱歉。
最简单的方法是两次编写原始代码(第二次重命名变量),并使用“hold on”语句绘制两个圆圈。
这使得代码看起来非常难看——当像这样扩展代码时,您确实应该对内容进行矢量化并定义函数——但它会在必要时完成任务。结果是这样的(对我的原始代码进行5分钟的编辑):
(x-h)^2 + (y-k)^2 = r^2
中心:(h,k)半径:r
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 = 0(1、N1);
ytemp22 = 0(1、N1);
我= 1:1:N
√(r^2 - X(i)^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 + square1;
结束
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;
Yunit = r * sin(th) + y;
如果角度是角度,可以使用cosd()和sind()。

登录评论。

下载188bet金宝搏

社区寻宝

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

开始狩猎!