“常用公式”在线计算,“设计手册”在线查询
程序如,

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,[]);
在这样的方格矩阵中,画任意直线,直线经过的小方格要求涂黑



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 支持支持 反对反对

共 4 个关于本帖的回复 最后回复于 2014-5-7 15:18

沙发
李尚福 十品草民 发表于 2014-5-6 15:28:28 | 只看该作者
研发埠培训中心
每个格子的横纵坐标都知道,直线的话方程也可以求吧,一旦有了这两个信息,对每一条格线,可以求出和直线的交点,也就可以知道通过那个格子
板凳
张铁军 新来的 发表于 2014-5-6 17:34:34 | 只看该作者
研发埠人才中心
如果可以用其他方法定义方格的话,找到方格后可以用fill[x,y] = meshgrid(0:9);plot(x,y,'k',y,x,'k')hold onm=[0 1 1 0];n=[0 0 1 1];fill(m,n,'k')set(gca,'xtick',[],'ytick',[])
地板
王学德 新来的 发表于 2014-5-7 10:50:32 | 只看该作者
你这种绘图方式有些麻烦,因为你使用像素为单位的,因此你的网格线是有宽度的,难么你所谓的直线是怎么描述呢?,怎么确定一个直线的方向和位置?如果是按照数学意义上的,那么就需要坐标的概念了,这就没法与像素单位进行计算。如果直接全部使用坐标来画网格,那么直线就方便定义了,绘制黑方块就方便多了。[x,y] = 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;[row,col]=find(id~=15&id~=0);idx=row+(col-1)*size(x,1);sqx=[x(idx)';x(idx+size(x,1))';x(idx+size(x,1)+1)';x(idx+1)'];sqy=[y(idx)';y(idx+size(x,1))';y(idx+size(x,1)+1)';y(idx+1)'];plot(x,y,'k',y,x,'k')hold onfill(sqx,sqy,'k')plot([0,2.2],3*[0,2.2]+2,'r')  % 绘制直线a*x+b*y+c=0
5#
赵运 十品草民 发表于 2014-5-7 15:18:58 | 只看该作者
非常感谢,就是想寻找这种方法!!学习了!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注我们

360网站安全检测平台