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

4778次(最近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,Y单元);
持有
一种替代的方法是使用“矩形”功能:
功能H = CIRCLE2(X,Y,R)
d = R * 2;
PX = X-R;
PY = Y-R;
H =矩形('位置'[PX PY d d]“弯曲”,[1,1]);
daspect([1,1,1])
如果您正在使用R2012a或更高版本,并拥有图像处理工具箱,那么您可以使用'viscircles'功能绘制圆:
viscircles(中心、半径)

9日评论

表演 6条较早的评论
Abboud迈克尔
Abboud迈克尔 在2017年8月1日
如果你想画一个圆,给定两点[圆心,圆上的点],而不是[圆心,半径],你可以简单地计算两点之间的距离,然后用这个距离作为半径。
Ozgur Saglam
Ozgur Saglam 2020年5月3日
能够 请你解释的时间间隔?什么PI / 50是什么意思?我可以只写TH = 0:2 * PI ,所以 积分从0到2*
沃尔特·罗伯逊
沃尔特·罗伯逊 2020年5月3日
是的,你可以只写0:2 * PI
> > 0:2 *π
ANS =
0 1 2 3 4 5 6
这将使你7个不同的弧度值,并接近圆形的七边形,这可能是你的目的不够好。每个侧将覆盖大于60度的位较少。这不会在所有 轮对大多数人来说。
什么PI / 50平均值
有2个* PI弧度了一圈,所以采用pi / 50作为步骤意味着你将近似圆为(2 * PI)/(PI / 50)= 100下侧,因此,每个边将大致3.6度。这足以两侧的圆形会 对大多数人弯曲。

登录并发表评论。

更多的答案(4)

serwan Bamerni
serwan Bamerni 2016年2月17日
现在有一个叫做viscircles()函数:

2的评论

沃尔特·罗伯逊
沃尔特·罗伯逊 在二○一六年十月一十七日
这是图像处理工具箱的一部分
ceethal piyus
ceethal piyus 2019年5月16日
我应用了环形霍夫变换来识别图像中的圆形物体,我得到了结果。但当我在应用程序设计器中使用代码时,设置了在圆心被标记的图像中绘制圆的方法,它会以不同的图形绘制圆。我如何使圆和中心点在同一坐标轴上(命名为“app.segmented”)
code.JPG
错误
code1.JPG
如何在一个应用程序设计的轴名称添加到viscircles功能。我累了
viscircles(中心、半径、“颜色”、“b”,“父母”,“app.segemented”);它给出了以下错误。
code2.JPG

登录并发表评论。


胺bouabid
胺bouabid 2018年7月23日
编辑:胺bouabid 2018年7月23日
你好
您可以通过编写简单的绘制一个圆:
信谊x;信谊y;
ezplot((X-11)。^ 2 +(Y基)。^ 2-R ^ 2)
其中xi和yi是中心的坐标,r是半径

0评论

登录并发表评论。


Supoj Choachaicharoenkul
Supoj Choachaicharoenkul 在2019年10月2日
积(X,Y, '博', 'MarkerSize',50);

0评论

登录并发表评论。


Devin Marcheselli
Devin Marcheselli 在2020年1月17日
我如何使用等式绘制圆圈:。(X-H)^ 2 +(Y-K)^ 2 = R ^ 2

3评论

马克Rzewnicki
马克Rzewnicki 在2020年1月20日
嘿,这里,我已经把它和复值函数联系起来了。
事实证明,这是一个很平凡的问题。有你一路上遇到许多问题 - 你需要如何定义你的圈子的一些任意选择。我将与大家分享我发现是最自然的方式。
假设y为独立变量,在圆方程中展开x项:
把这些展开的项放到方程的右边
以双方的平方根,使知识的右侧:
你可以用这个方程来画圆。我给出的代码有点乱(本来是为另一种情况下的个人使用准备的),但我将添加一些注释,希望您能像我一样发现它的有趣。
***从所有这一切的大外卖:我们可以应对直角坐标圈,但它更自然地用极坐标,并认为圆为点与距中心距离r的轨迹。
%圆方程:(X-H)^ 2 +(Y-K)^ 2 = R ^ 2
%中心:(h,k)半径:r
H = 1;
K = 1;
R = 1;
在x坐标中,圆“开始”在h-r,“结束”在h+r
点之间%% x_res =分辨率间距
XMIN = H - R等
XMAX = H + R;
x_res = 1 e - 3;
X = XMIN:x_res:XMAX;
对于大多数的x坐标,圆上有2个y坐标。
%%我们需要复制每一个x坐标,所以我们可以用每个x匹配
它的y值对。
%%方法选择:重复x坐标为圈“环绕”
%%例:x =[0 0.1 0.2…结束结束……0.2 - 0.1 0]
N =长度(X);
[x翻转(x)];
%% ytemp1:y值,因为我们沿着圆扫矢量左到右
%% ytemp2:y值向量作为我们沿着圆圈从右到左扫
%%无论我们采取积极的或消极的价值观首先是任意的
ytemp1 =零(1,N);
ytemp2 =零(1,N);
对于我= 1:1:N
正方形= SQRT(R ^ 2 - X(ⅰ)^ 2 + 2 * X(I)* H - H ^ 2);
ytemp1(I)= K - 平方;
ytemp2(N+1-i) = k + square;
结束
Y = [ytemp1 ytemp2];
%%绘制(X,Y)点
轴缩放系数c:图形应该超过半径多远?
C = 1.5;
图1)
积(X,Y)
轴([H-C * R H + C * R K-C * R K + C * R]);
ASHLY汤姆
ASHLY汤姆 在2020年3月5日
非常感谢。
你能告诉我如何用你的代码在同一个图中画出两个圆吗?
马克Rzewnicki
马克Rzewnicki 2020年3月17日
很遗憾,我刚刚才看到这个,抱歉。
要做到这一点最简单的方法会一直写的原代码的两倍(重命名变量,第二次)和“暂停”的声明绘制用两个圆。
这使得代码看起来残酷丑陋的 - 你真的应该向量化的东西和推广这样的代码时所定义的功能 - 但它会完成的工作在紧要关头做。结果会是这个样子(我的原代码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坐标,圆上有2个y坐标。
%%我们需要复制每一个x坐标,所以我们可以用每个x匹配
它的y值对。
%%方法选择:重复x坐标为圈“环绕”
%%例:x =[0 0.1 0.2…结束结束……0.2 - 0.1 0]
N =长度(X);
[x翻转(x)];
N1 =长度(X1);
X1 = [X1翻转(X1)];
%% ytemp1:y值,因为我们沿着圆扫矢量左到右
%% ytemp2:y值向量作为我们沿着圆圈从右到左扫
%%无论我们采取积极的或消极的价值观首先是任意的
ytemp1 =零(1,N);
ytemp2 =零(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 + square;
结束
对于I = 1:1:N1
square1 = SQRT(R1 ^ 2-X1(ⅰ)^ 2 + 2 * X1(I)* H1 - H1 ^ 2);
ytemp11(i) = k1 - square1;
ytemp22(ⅰ)= K1 + square1;
结束
Y = [ytemp1 ytemp2];
y1 = [ytemp11 ytemp22];
%%绘制(X,Y)点
图1)
积(X,Y)
持有
图(X1,Y1)
轴([ - 5 5 -5 5]);

登录并发表评论。

s manbetx 845