基本信息
源码名称:Matlab画直线(Bresenhamline.m)
源码大小:1.20KB
文件格式:.m
开发语言:MATLAB
更新时间:2021-03-15
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

利用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