matlab中如何求出以一点为圆心画圆得到图像内的所有点的坐标

如题所述

把这些点的所有坐标存入数组xy,假设圆心为(x0,y0)半径r,节点数为n,xy的第一列为x坐标,第二列为y坐标。代码如下
x0=1;y0=1;r=2;n=100;
xy=zeros(100,2);
h=2*pi/(n-1);
for i=1:n
xy(i,1)=x0+r*cos((i-1)*h);
xy(i,2)=y0+r*sin((i-1)*h);
end
plot(xy(:,1),xy(:,2))
axis equal追问

h=2*pi/(n-1);这句是什么意思呢?
还有,现在已知的就只有圆心坐标和半径,并不知道里面有多少节点。

追答

对于前者,h是角度坐标的步长。
对于后者,我不清楚你所遇到的实际问题是什么样的。能不能假设一个比较大的节点数,因为从理论上一个圆上的节点数是无穷大的,我们进行数值计算只要节点数足够多就可以了。

追问

是这样的,我在做的实习题目是基于matlab的图像变形,我所说的圆形图像是在原图像上取一点P,以他为圆心,R为半径的圆形图像,对于数字图像,坐标都是整数,所以园内的节点肯定是有限的。

追答

哦,这样的话,点的数目很明显应该由图片的像素点的大小来确定,像素点小则节点数多,图片也越清晰。然而这些都是无关紧要的,你只要将最后得到的坐标值人为取整,然后再删掉重复的节点就可以了。取整的命令如下,其中xy就是前面的数组。
xynew=round(xy)

追问

可是我还是事先不知道节点数啊,如果半径很大,我要一个一个数节点数么?

追答

恩你说的很对,可以一开始设置一个与半径有关的的量作为节点数如
n=10000*r,至于为什么取为线性关系,原因很简单——圆周公式,周长与半径成正比。前面的系数越大就越不会遗漏像素点,但是最后你需要删除的重复节点也多。

追问

恩,谢谢你!我知道了,咱俩好像理解岔了,我试了一下你写的代码,这个方法只能得出这个圆形的圆周那条线上的点的坐标,我需要的是这个圆形区域内的所有点的坐标。

追答

哦,那这样的话其实更简单。直接用下面的代码,其中 m,n为图片的长宽方向的像素点数目,x,y为圆心坐标,r为半径
m=300;n=300;x=50;y=50;r=10
xy=[x y];
for i=1:m
for j=1:n
if (i-x)^2+(j-y)^2<=r^2
xy=[xy;i,j];
end
end
end
plot(xy(:,1),xy(:,2),'r.')
axis equal
希望能帮助到你

温馨提示:内容为网友见解,仅供参考
无其他回答

matlab中如何求出以一点为圆心画圆得到图像内的所有点的坐标
把这些点的所有坐标存入数组xy,假设圆心为(x0,y0)半径r,节点数为n,xy的第一列为x坐标,第二列为y坐标。代码如下 x0=1;y0=1;r=2;n=100;xy=zeros(100,2);h=2*pi\/(n-1);for i=1:n xy(i,1)=x0+r*cos((i-1)*h);xy(i,2)=y0+r*sin((i-1)*h);end plot(xy(:,1...

如何用matlab输出图形中各点的坐标
1、第一步,选择菜单栏的“Data Cursor”选项,然后在要查看其坐标值的数据点上点击鼠标的左键,见下图,转到下面的步骤。2、第二步,执行完上面的操作之后,在“tools”选项中单击“Data Cursor”按钮,见下图,转到下面的步骤。3、第三步,执行完上面的操作之后,就获得了想要的结果了,见下图。这...

matlab中如何以一个点为圆心画圆
用程序作图:R1=10;R2=6.6;R3=2; %定义半径phi=0:pi\/20:2*pi;x1=R1*cos(phi);y1=R1*sin(phi);x2=R2*cos(phi);y2=R2*sin(phi);figureplot(x1,y1,x2,y2) %画内外圆axis([-R1-2,R1+2,-R1-2,R1+2])axis equalhold onplot(0,0,'.') %画圆心bx=R1*cos(pi...

matlab 如何求圆的圆心坐标
1、首先打开软件,然后进行下一步操作。2、通过plot命令,画出一个图像。3、此时可以发现系统根据数据,绘画一个图像。4、然后在上方找到“datacursor”这就是坐标指针。5、将鼠标移动到圆心,即可快速查看圆心坐标。6、这里需要提醒的是,这里一次只能识别一个坐标,如果需要识别多个坐标,可以使用s=inpu...

怎么用matlab求出椭圆各点在图像中的坐标?
图像都能画出来,图像中各点的坐标肯定是已知 可以从matlab的fig窗口中,都过获得line object的句柄,获得图像中曲线的数据点 比较简单的办法是找到fig菜单栏中data cursor的按钮 点击之后,将鼠标移到曲线上再点击,就会有浮动框显示数据的x,y坐标 ...

matlab画图时如何获取指定点的坐标值?
1、以图中圆圈标注的部分为例,需要获取最高处的极值点坐标。2、首先运用放大功能将图中的曲线放大。3、当放大之后就能清楚地看到极值点了。4、接着用数据游标功能,在最大极值点上点击,就能拾取到了该最大极值点,其最大极值点坐标为(4,2.22*10^9)。

matlab如何编程一个圆,圆内画随机点,并求出任意两点间距离小于0.1倍半 ...
回答:若有n个点,那么就有n*(n-1)个点对。你是要求这么所以满足你要求的点对的个数,还是对任意点只要有一个点满足条件的点的数目?

matlab:已知一幅图像某点的坐标,以此点为圆心,指定r为半径画圆,提取该...
a=imread('a.jpg');imshow(a)[a1 a2 a3]=size(a);x0=300;y0=200;r=100;for i=1:a1 for j=1:a2 if (i-x0)^2+(j-y0)^2>=r^2 a(i,j,:)=255;end end end figure imshow(a)看看这个例子能不能满足你的要求

如何用matlab软件画出圆的极坐标图像?
用matlab软件中的polarplot函数(或polar函数--适应于老版本)画出圆的极坐标图像。例如:绘制ρ=2a·cos(θ)函数图像,这里a=10 >> theta = 0:0.01:2*pi;>> rho = 2*10.*cos(theta);>> polarplot(theta,rho)

求在一个圆内均匀分布n个点(如n=360)的坐标,用matlab怎么实现?
seta=2*pi*rand(1,n);x=r.*cos(seta);y=r.*sin(seta);plot(x,y,'*')如果是等角度等半径。会感觉中心会比上面那个图很密。n=360;R=5;t=0:0.02:2*pi;plot(R*cos(t),R*sin(t),'r');axis square hold on r=R*rand(1,n);seta=2*pi*rand(1,n);x=r.*cos(seta);y...

相似回答