赵运 发表于 2014-5-6 10:36:20

方格矩阵内画直线,直线经过的小方格涂黑

程序如,

a=ones(270,270);
a=a*25;
for i=1:10
a(max(1,(i-1)*30):max(1,(i-1)*30)+1,:)=0;
a(:,max(1,(i-1)*30):max(1,(i-1)*30)+1)=0;
end
figure;
imshow(a,[]);
在这样的方格矩阵中,画任意直线,直线经过的小方格要求涂黑



李尚福 发表于 2014-5-6 15:28:28

每个格子的横纵坐标都知道,直线的话方程也可以求吧,一旦有了这两个信息,对每一条格线,可以求出和直线的交点,也就可以知道通过那个格子

张铁军 发表于 2014-5-6 17:34:34

如果可以用其他方法定义方格的话,找到方格后可以用fill = meshgrid(0:9);plot(x,y,'k',y,x,'k')hold onm=;n=;fill(m,n,'k')set(gca,'xtick',[],'ytick',[])

王学德 发表于 2014-5-7 10:50:32

你这种绘图方式有些麻烦,因为你使用像素为单位的,因此你的网格线是有宽度的,难么你所谓的直线是怎么描述呢?,怎么确定一个直线的方向和位置?如果是按照数学意义上的,那么就需要坐标的概念了,这就没法与像素单位进行计算。如果直接全部使用坐标来画网格,那么直线就方便定义了,绘制黑方块就方便多了。 = meshgrid(0:9);a=3; b=-1; c=2; % 定义直线a*x+b*y+c=0des=a*x+b*y+c>=0;A=des(1:end-1,1:end-1);B=des(1:end-1,2:end);C=des(2:end,2:end);D=des(2:end,1:end-1);id=A+B*2+C*4+D*8;=find(id~=15&id~=0);idx=row+(col-1)*size(x,1);sqx=;sqy=;plot(x,y,'k',y,x,'k')hold onfill(sqx,sqy,'k')plot(,3*+2,'r')% 绘制直线a*x+b*y+c=0

赵运 发表于 2014-5-7 15:18:58

非常感谢,就是想寻找这种方法!!学习了!!
页: [1]
查看完整版本: 方格矩阵内画直线,直线经过的小方格涂黑