|
你这种绘图方式有些麻烦,因为你使用像素为单位的,因此你的网格线是有宽度的,难么你所谓的直线是怎么描述呢?,怎么确定一个直线的方向和位置?如果是按照数学意义上的,那么就需要坐标的概念了,这就没法与像素单位进行计算。如果直接全部使用坐标来画网格,那么直线就方便定义了,绘制黑方块就方便多了。[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 |
|
共 4 个关于本帖的回复 最后回复于 2014-5-7 15:18