matlab中点画线法代码,点划线规范画法,求中点画线算法的c++代码...

直线方程:a*x+b*y+c=0, p1(x1,y1), p2(x2,y2)==> a=y1-y2;b=x2-x1.

点到直线的距离:distance=|a*x0-b*y0+c|/sqrt(a*a + b*b)

设directionX,directionY分别为从(x1,y1)==>(x2,y2)的单位变化量(+/-1)

当直线偏向X轴时,当前象素为(xk, yk),下一个象素可能为:(xk+directionX, yk)或者(xk+directionX,yk+directionY)这两点到直线的距离分别为:

d1=|a*xk+b*yk+c+a*directionX|/sqrt(a*a + b*b);

d2=|a*xk+b*yk+c+a*directionX+b*directonY|/sqrt(a*a + b*b);

便于运算,定义:f(xk,yk)= d2 * d2 - d1 * d1 (将d1和d2的分母去掉了的)

= b*b + 2*b*directonY*(a*xk+b*yk+c+a*directionX) ;

当f(xk,yk)=0的时候,下一个点为(xk+directionX, yk) :

f(xk+directionX, yk) = f(xk,yk) + 2*a*b*directionX*directionY ;

当直线偏向Y轴时,当前象素为(xk, yk),下一个象素可能为:(xk, yk+directionY)或者(xk+directionX,yk+directionY)这两点到直线的距离分别为:

d1=|a*xk+b*yk+c+b*directionY|/sqrt(a*a + b*b);

d2=|a*xk+b*yk+c+b*directionY+a*directonX|/sqrt(a*a + b*b);

便于运算,定义:f(xk,yk)= d2 * d2 - d1 * d1 (将d1和d2的分母去掉了的)

= a*a + 2*a*directonX*(a*xk+b*yk+c+b*directionY) ;

当f(xk,yk)=0的时候,下一个点为(xk+directionX, yk) :

f(xk+d......

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值