如何画一个半径和圆心给定的圆?

8012次观看(过去30天)
我想画一个半径和圆心给定的圆。

接受的答案

MathWorks支金宝app援小组
编辑:MathWorks支金宝app援小组 2022年3月23日
下面是一个MATLAB函数,它绘制一个半径为'r'的圆,并将圆心定位在坐标'x'和'y':
函数H =圆(x,y,r)
持有
Th = 0:pi/50:2*pi;
Xunit = r * cos(th) + x;
Yunit = r * sin(th) + y;
H = plot(xunit, yunit);
持有
另一种方法是使用'rectangle'函数:
函数H =圆2(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(中心、半径)
18岁的评论
沃尔特·罗伯森
沃尔特·罗伯森 2022年9月9日
如果脚本后面有函数,而函数没有匹配,则会得到不同的错误消息 结束 声明。
如果您尝试在R2015b之前的MATLAB版本的脚本中创建函数,则可能会发生这种错误。如果您试图在命令行定义一个函数,也可能会发生这种情况(我似乎记得这种情况下的措辞略有不同,但可能这是我使用的旧版本中的措辞)。

登录评论。

更多答案(9)

serwan Bamerni
serwan Bamerni 2016年2月17日
现在有一个叫做viscircles()的函数:
3评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年12月25日
viscircles(应用程序。分段,中心,半径,“颜色”“b”

登录评论。


史蒂文的主
史蒂文的主 2020年12月25日
另一种可能是用a来近似圆 polyshape 用大量的边和绘图 polyshape
P = nsidedpoly(1000,“中心”, [2 3],“半径”5);
情节(p,“FaceColor”“r”
平等的
3评论

登录评论。


Supoj Choachaicharoenkul
Supoj Choachaicharoenkul 2019年10月2日
plot(x, y, 'bo', 'MarkerSize', 50);
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2022年2月5日
取决于您使用的图形驱动程序,当您要求绘制大的圆形标记时,结果可能看起来不是圆形。驱动程序近似一个圆,但在进行近似时通常不考虑圆的大小,因此看起来可能很糟糕。

登录评论。


胺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()或使用plot()带'o'标记和大'MarkerSize'会更短。

登录评论。


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

登录评论。


帕特里夏阿基拉
帕特里夏阿基拉 2021年5月4日
物体在半径为1的圆周上运动。绘制这个圆,并在67º的角度放置一个点。帮助我
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年5月4日
对于67度,请注意
Xunit = r * cos(th) + x;
Yunit = r * sin(th) + y;
如果角度是以度为单位,则可以使用cosd()和sind()。

登录评论。


Devin Marcheselli
Devin Marcheselli 2020年1月17日
如何用方程(x-h)²+(y-k)来画圆。^2 = r ^2
3评论
马克Rzewnicki
马克Rzewnicki 2020年3月17日
很遗憾,我刚看到这个,抱歉。
要做到这一点,最简单的方法是编写两次原始代码(第二次重命名变量),并使用“hold on”语句绘制两个圆。
这使得代码看起来非常丑陋——当像这样扩展代码时,你真的应该向量化东西并定义函数——但它可以在紧要关头完成工作。结果如下所示(对原始代码进行了5分钟的编辑):
%圆方程:(x-h)²+ (y-k)²= r²
%中心:(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 = 1e-3;
X = xmin:x_res:xmax;
Xmin1 = h1 - r1;
Xmax1 = h1 + r1;
X1 = xmin1:x_res:xmax1;
对于大多数x坐标,圆上有2个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);
i = 1:1:N
平方=根号(r²- X(i)²+ 2*X(i)*h - h²);
Ytemp1 (i) = k -平方;
ytemp2(N+1-i) = k +平方;
结束
i = 1:1:N1
square1 =√(r1²-X1(i)²+ 2*X1(i)*h1 - h1²);
Ytemp11 (i) = k1 - square1;
Ytemp22 (i) = k1 + square1;
结束
Y = [ytemp1 ytemp2];
Y1 = [ytemp11 ytemp22];
绘制(x,y)点
图(1)
情节(x, y)
持有
情节(x1, y1)
轴([-5 5 -5 5]);

登录评论。


阿里yaman
阿里yaman 2022年4月14日
编辑:阿里yaman 2022年4月14日
我认为上面的任何一种解决方案都没有必要,你可以用下面的代码之一来画一个圆。金宝搏官方网站
我们设半径是 5
fimplicit (@ (x, y) x ^ 2 + y ^ 2-25)
ezplot (“x ^ 2 + y ^ 2-25”, 5, 5])
请注意,代码中的25来自5的平方。如果你愿意
%画一个半径为8的圆,然后把25写成64。
4评论
阿里yaman
阿里yaman 2022年4月19日
谢谢 @Walter罗伯森 .我不知道fimplicit的默认绘图区域是[-5 5]。

登录评论。


山姆Zebrado
山姆Zebrado 2022年6月12日
编辑:山姆Zebrado 2022年6月12日
如果你需要在不相等的轴上绘制圆,但不要让它们看起来像椭圆,你可以使用这样的单行函数:
%%使用不同半径绘制的函数
Fc_circle_plot = @(xs,ys,rs,varargin). ..
arrayfun (@ (x, y, r)情节(x, y,“o”“MarkerSize”r变长度输入宗量{:}),x, y, rs,“UniformOutput”、假);
%%一个演示
X = 1:5;
Y = rand(1,5);
半径= randi([10,20],1,5);%从10到20的随机整数,大小为[1,5]
图;
持有;
fc_circle_plot (x, y,半径,. ..
“颜色”“b”“线宽”,2. ..plot()支持的任何参数都可金宝app以放在这里
);
持有;
附注:也可以将函数图替换为其他用途的函数。
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2022年6月12日
请注意,圆形“标记”只是图形引擎的近似值,而且随着它变大,看起来可能会越来越扭曲。

登录评论。

类别

了解更多极地的情节帮助中心而且文件交换

下载188bet金宝搏

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!