没有合适的资源?快使用搜索试试~ 我知道了~
matlab的bresenham画圆
资源推荐
资源详情
资源评论
function [X,Y]=Bresenhamcircle(x0,y0,r)
X=ones(1,1000);
Y=X; %坐标向量,用于存储绘制的点的坐标
x1=X;x2=X;x3=X;x4=X;x5=X;x6=X;x7=X;x8=X;
y1=Y;y2=Y;y3=Y;y4=Y;y5=Y;y6=Y;y7=Y;y8=Y; %将圆对称划分为8个部分,分别用xi,yi记录坐标
D=ones(1,1002); %判别向量
i=1;
x1(1)=x0;x2(1)=x0+r;x3(1)=x2(1);x4(1)=x0;x5(1)=x4(1);x6(1)=x0-r;x7(1)=x6(1);x8(1)=x1(1);
y1(1)=y0+r;y2(1)=y0;y3(1)=y2(1);y4(1)=y0-r;y5(1)=y4(1);y6(1)=y0;y7(1)=y6(1);y8(1)=y1(1); %初始条件
xd=2^(1/2)/2*r+x0;
while x1(i)<xd
i=i+1;
x1(i)=x1(i-1)+1;y2(i)=y2(i-1)+1;y3(i)=y3(i-1)-1; x4(i)=x4(i-1)+1; x5(i)=x5(i-1)-1;y6(i)=y6(i-1)-1;y7(i)=y7(i-1)+1; x8(i)=x8(i-1)-1; %计长方向总加1
D(i)=2*(y1(i-1)-y0-(r^2-(x1(i)-x0)^2)^(1/2))-1;
if D(i)<0
y1(i)=y1(i-1);x2(i)=x2(i-1);x3(i)=x3(i-1);y4(i)=y4(i-1);y5(i)=y5(i-1);x6(i)=x6(i-1);x7(i)=x7(i-1); y8(i)=y8(i-1);
end
if D(i)>=0
y1(i)=y1(i-1)-1;x2(i)=x2(i-1)-1;x3(i)=x3(i-1)-1;y4(i)=y4(i-1)+1;y5(i)=y5(i-1)+1;x6(i)=x6(i-1)+1;x7(i)=x7(i-1)+1; y8(i)=y8(i-1)-1;
end
end
X(1:i)=x1(1:i);X(i+1:2*i)=x2(1:i);X(2*i+1:3*i)=x3(1:i);X(3*i+1:4*i)=x4(1:i);X(4*i+1:5*i)=x5(1:i);X(5*i+1:6*i)=x6(1:i);X(6*i+1:7*i)=x7(1:i);X(7*i+1:8*i)=x8(1:i);
Y(1:i)=y1(1:i);Y(i+1:2*i)=y2(1:i);Y(2*i+1:3*i)=y3(1:i);Y(3*i+1:4*i)=y4(1:i);Y(4*i+1:5*i)=y5(1:i);Y(5*i+1:6*i)=y6(1:i);Y(6*i+1:7*i)=y7(1:i);Y(7*i+1:8*i)=y8(1:i);
X=X(1:8*i);Y=Y(1:8*i);
a=0:pi/2000:2*pi;
x=x0+r*cos(a);
y=y0+r*sin(a);
plot(x,y,'k');
legend('实际图像');hold on;
plot(X,Y,'r.');
X=ones(1,1000);
Y=X; %坐标向量,用于存储绘制的点的坐标
x1=X;x2=X;x3=X;x4=X;x5=X;x6=X;x7=X;x8=X;
y1=Y;y2=Y;y3=Y;y4=Y;y5=Y;y6=Y;y7=Y;y8=Y; %将圆对称划分为8个部分,分别用xi,yi记录坐标
D=ones(1,1002); %判别向量
i=1;
x1(1)=x0;x2(1)=x0+r;x3(1)=x2(1);x4(1)=x0;x5(1)=x4(1);x6(1)=x0-r;x7(1)=x6(1);x8(1)=x1(1);
y1(1)=y0+r;y2(1)=y0;y3(1)=y2(1);y4(1)=y0-r;y5(1)=y4(1);y6(1)=y0;y7(1)=y6(1);y8(1)=y1(1); %初始条件
xd=2^(1/2)/2*r+x0;
while x1(i)<xd
i=i+1;
x1(i)=x1(i-1)+1;y2(i)=y2(i-1)+1;y3(i)=y3(i-1)-1; x4(i)=x4(i-1)+1; x5(i)=x5(i-1)-1;y6(i)=y6(i-1)-1;y7(i)=y7(i-1)+1; x8(i)=x8(i-1)-1; %计长方向总加1
D(i)=2*(y1(i-1)-y0-(r^2-(x1(i)-x0)^2)^(1/2))-1;
if D(i)<0
y1(i)=y1(i-1);x2(i)=x2(i-1);x3(i)=x3(i-1);y4(i)=y4(i-1);y5(i)=y5(i-1);x6(i)=x6(i-1);x7(i)=x7(i-1); y8(i)=y8(i-1);
end
if D(i)>=0
y1(i)=y1(i-1)-1;x2(i)=x2(i-1)-1;x3(i)=x3(i-1)-1;y4(i)=y4(i-1)+1;y5(i)=y5(i-1)+1;x6(i)=x6(i-1)+1;x7(i)=x7(i-1)+1; y8(i)=y8(i-1)-1;
end
end
X(1:i)=x1(1:i);X(i+1:2*i)=x2(1:i);X(2*i+1:3*i)=x3(1:i);X(3*i+1:4*i)=x4(1:i);X(4*i+1:5*i)=x5(1:i);X(5*i+1:6*i)=x6(1:i);X(6*i+1:7*i)=x7(1:i);X(7*i+1:8*i)=x8(1:i);
Y(1:i)=y1(1:i);Y(i+1:2*i)=y2(1:i);Y(2*i+1:3*i)=y3(1:i);Y(3*i+1:4*i)=y4(1:i);Y(4*i+1:5*i)=y5(1:i);Y(5*i+1:6*i)=y6(1:i);Y(6*i+1:7*i)=y7(1:i);Y(7*i+1:8*i)=y8(1:i);
X=X(1:8*i);Y=Y(1:8*i);
a=0:pi/2000:2*pi;
x=x0+r*cos(a);
y=y0+r*sin(a);
plot(x,y,'k');
legend('实际图像');hold on;
plot(X,Y,'r.');
资源评论
qqww5193263
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
- 以下是一个简化的示例,它使用pygame库来模拟烟花动画的框架.txt
- Linux线程同步机制深度解析与实用指南.zip
- PTA题库C语言解题策略与实战.rar
- SVPWM控制技术的simulink建模与仿真【包括simulink模型,参考文献,操作步骤】
- AI高清修复图片画质易语言易语言源码易语言填表
- 映射窗口.ec易语言易语言模块CPU占用0%游戏监控窗口监控
- 易语言 361窗口模块高效、便捷、自封装、自用
- 易语言 窗口排列 模块 ,简单、高效、体积小
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功