我surf()
用来绘制球体的一部分;基本上是位于球体顶部的某种形状的外壳。更具体地说,它是球形关节的工作空间图,颜色代表关节在该点的分辨率。
无论如何,形状是独一无二的,但会surf()
自动填补不应该存在的空白。我猜这可能是它的绘制顺序?有什么办法可以阻止 Matlab 这样做吗?
我认为图片中不应该出现的内容很明显:
此外,它似乎也弄乱了颜色编码。深蓝色应该在外壳的底部边缘;相反,Matlab 将其分配给用于填充间隙的表面。
我surf()
用来绘制球体的一部分;基本上是位于球体顶部的某种形状的外壳。更具体地说,它是球形关节的工作空间图,颜色代表关节在该点的分辨率。
无论如何,形状是独一无二的,但会surf()
自动填补不应该存在的空白。我猜这可能是它的绘制顺序?有什么办法可以阻止 Matlab 这样做吗?
我认为图片中不应该出现的内容很明显:
此外,它似乎也弄乱了颜色编码。深蓝色应该在外壳的底部边缘;相反,Matlab 将其分配给用于填充间隙的表面。
以下代码实现了我认为您要问的内容(即 - 使曲面图的一部分“不可见”,我通过定义一个transp
与 具有相同尺寸的矩阵来实现这一点zz
,具有 alpha 值(1 = 可见,0 = 透明)。当然你必须改变你的定义transp
来匹配你不想看到的表面部分——我简单的剪裁方法只是为了展示可以做什么):
[xx yy]=meshgrid(linspace(-1,1,200));
zz = 1./(xx.^2 + yy.^2 + 0.5);
theta = atan2(yy,xx);
r = sqrt(xx.^2 + yy.^2);
transp = double(r < (0.3*cos(6*theta)+0.6));
figure
surf(xx,yy,zz,'edgecolor','none','FaceAlpha', 'interp', 'AlphaData', transp);
这给出了以下情节:
我相信你可以从这里弄清楚。如果这不起作用,您需要提供有关您拥有的数据的更多信息 - 大小是多少,您如何绘制它......