Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Matlab中无边界绘制多个多边形_Matlab_Graphics_2d - Fatal编程技术网

在Matlab中无边界绘制多个多边形

在Matlab中无边界绘制多个多边形,matlab,graphics,2d,Matlab,Graphics,2d,我正在创建一个包含许多多边形的图形,这些多边形可以在Matlab中重叠。我不想在任何形状的边界,只有一个半透明的填充。我能够使用以下方法获得第一个形状以满足此要求: fill(xv,yv,'blue','FaceAlpha',0.1,'EdgeColor','None','LineStyle','none');hold on; 但是,在循环中绘制的每个后续形状都会忽略此样式,而不是在彩色边框中循环。我可以使用set命令覆盖颜色循环,但这仍然会绘制边框…我不想要任何边框。边界根本无法绘制,因为我

我正在创建一个包含许多多边形的图形,这些多边形可以在Matlab中重叠。我不想在任何形状的边界,只有一个半透明的填充。我能够使用以下方法获得第一个形状以满足此要求:

fill(xv,yv,'blue','FaceAlpha',0.1,'EdgeColor','None','LineStyle','none');hold on;
但是,在循环中绘制的每个后续形状都会忽略此样式,而不是在彩色边框中循环。我可以使用set命令覆盖颜色循环,但这仍然会绘制边框…我不想要任何边框。边界根本无法绘制,因为我们使用的是形状的重叠属性,任何边界的存在都会扰乱模拟的性质

以下是完整的代码:

for count = 1:92
 x=randn*clustering;
 y=randn*clustering;
 angle=randn*360;
 rectangle(width,height,x,y,angle);
end

function rectangle(w,h,x,y,angle)
 %Define the rectangle
 xv=[x x+w x+w x x];
 yv=[y y y+h y+h y];
 %Define the rotation transformation matrix
 transform=[cos(angle) -sin(angle);sin(angle) cos(angle)];
 %Define the translation to origin transform
 xcenter=x+.5*w;
 ycenter=y+.5*h;
 %Perform translation to origin
 tx=xv-xcenter;
 ty=yv-ycenter;
 %Perform rotation
 rotated=transform*[tx;ty];
 %Perform translation back to original location
 xv=rotated(1,:)+xcenter;
 yv=rotated(2,:)+ycenter;
 %Plot result
 figure(1);
 plot(xv,yv);
 fill(xv,yv,'blue','FaceAlpha',0.1);hold on;
 axis square;
 axis([-30 30 -30 30]);

当我用两个不同的向量值尝试这个代码时,
xv
yv
我没有得到任何边界。我得到的是重叠区域中的不同颜色,因为这两种颜色由于alphaWell而“添加”在那里,然后对于您绘制的所有颜色,都使用“EdgeColor”、“none”,当我绘制多个多边形时,我也不会得到边界。你应该告诉我们你的循环代码。这里可能有一条指令,与您作为示例给出的简单行不同。另外,函数
fill
创建一个
patch
对象并自动设置一些属性。如果你想要更多的控制,可以直接使用
patch
。alpha值的“加法”正是我们所追求的,因为它表示形状重叠区域的程度。函数
fill
工作正常,但你正上方的行执行:
plot(xv,yv)。此指令将绘制一条线,表示多边形的轮廓(看起来像“边界”)。注释这一行,将
'EdgeColor','None'
添加到
fill
的参数中(只是为了确保),您就可以了。