matlab 画m,Matlab画直线(Bresenhamline.m)

【实例简介】

利用bresesnham算法画直线

【实例截图】

【核心代码】

h=256;

w=256;

img=zeros(h,w);

x1=1;

x2=256;

y1=1;

y2=180;

img=BresenhamDraw(img,x1,y1,x2,y2);

figure(1);

imshow(img,[]);

function img=BresenhamDraw(img,x1,y1,x2,y2)

if x1~=x2

k=(y2-y1)/(x2-x1);

flag=0;         %斜率判断标记位

if abs(k)>1     %如果斜率大于1,则把x和y方向置换

flag=1;

k=1/k;

[y1 ,x1]=Swap(x1,y1);

[y2 ,x2]=Swap(x2,y2);

end

%计算开始画线的像素

mi=min(x1,x2);

ma=max(x1,x2);

if mi==x1

s=y1;

else

s=y2;

end

d=0;

for i=mi:ma

if flag==0

img(s,i)=1;

else

img(i,s)=1;

end

d=d k;

%自变量i每加1,根据d是否超过一个像素来确定因变量s增加或减少

if d>=1

d=d-1;

s=s 1;

elseif d<=-1

d=d 1;

s=s-1;

end

end

end

end

function [y ,x]=Swap(x1,y1)

x=y1;

y=x1;

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值