delphi Bresenham算法生成坐标点,8个方向

系统提示找不到符号函数Sign();要uses Math;加入数据函数库。


// Bresenham算法生成坐标点

procedure Bresenhamline(x0, y0, x1, y1: integer);
var
  x, y, dx, dy, s1,  s2, d, e, temp,  i: integer;
begin
  x := x0;
  y := y0;
  dx := abs(x1 - x0);
  dy := abs(y1 - y0);
  s1 := Sign(x1 - x0);
  s2 := Sign(y1 - y0);
  if dy > dx then
  begin
    temp := dx;
    dx := dy;
    dy := temp;
    d := 1;
  end
  else
  begin
    d := 0;
  end;
  e := 2 * dy - dx;
  for i := 1 to dx do
  begin
    mousexy(x, y);
    while e > 0 do
    begin
      if d = 1 then
      begin
        x := x + s1;
      end
      else
        y := y + s2;
      e := e - 2 * dx;
    end;
    if (d = 1) then
    begin
      y := y + s2;
    end
    else
      x := x + s1;
    e := e + 2 * dy;
  end;
end;


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值