Bresenham直线算法GUI——matlab实现

话不多说,直接上代码
BresenhamLine.m

function BresenhamLine(x0,y0,x1,y1)
dx=x1-x0;
dy=x1-x0;
len=max(abs(x1-x0),abs(y1-y0));
d(1)=dx-2*dy;
up=2*dx-2*dy;
down=-2*dy;
x(1)=x0;
y(1)=y0;
for n=1:len
    x(n+1)=x(n)+1;
    if d(n) < 0
        y(n+1)=y(n)+1;
        d(n+1)=d(n)+up;
    else
        y(n+1)=y(n);
        d(n+1)=d(n)+down;
    end
end
for n=1:len
    plot(x,y);
end

BrsenhamLineGUI.m

clc;
clear; 
close all; 
ha = axes('Units', 'pixels', 'Position', [40, 40, 400, 400]); 
ptgrid = uicontrol('Style', 'pushbutton', ...
    'String', '网格', 'Position', [450, 150, 60, 30], 'Callback', 'grid'); 
btncla = uicontrol('Style', 'pushbutton', ...
    'String', '清除', 'Position', [450, 100, 60, 30], 'Callback', 'cla');
btnplot = uicontrol('Style', 'pushbutton', ...
    'String', '绘图', 'Position', [450, 200, 60, 30]);
x0 = uicontrol('Style', 'text', ...
    'String', 'x', 'Position', [450, 380, 20, 20]);
ex0=uicontrol('Style', 'edit', ...
   'Tag','ex0', 'String', '', 'Position', [450, 340, 25, 20]);
y0 = uicontrol('Style', 'text', ...
    'String', 'y', 'Position', [480, 380, 20, 20]);
ey0=uicontrol('Style', 'edit', ...
   'Tag','ey0', 'String', '', 'Position', [480, 340, 25, 20]);
x1 = uicontrol('Style', 'text', ...
    'String', 'x1', 'Position', [450, 300, 20, 20]);
ex1=uicontrol('Style', 'edit', ...
    'Tag','ex1','String', '', 'Position', [450, 260, 25, 20]);
y1 = uicontrol('Style', 'text', ...
    'String', 'y1', 'Position', [480, 300, 20, 20]);
ey1=uicontrol('Style', 'edit', ...
   'Tag','ey1', 'String', '', 'Position', [480, 260, 25, 20]);
label=uicontrol('Style','text','String','Bresenham直线生成算法GUI','Position',[190, 440, 100, 30]);
label=uicontrol('Style','text','String','制作人:带制作人','Position',[445,40, 100, 30]);
btnplot.Callback = @plot_sin;   
function plot_sin(source, callbackdata)
X0=findobj('Tag', 'ex0');
Y0=findobj('Tag', 'ey0');
X1=findobj('Tag', 'ex1');
Y1=findobj('Tag', 'ey1');
BresenhamLine(str2num(X0.String),str2num(Y0.String),str2num(X1.String),str2num(Y1.String));
end

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值