Mathematica:删除图形基元

2024-01-09

鉴于g是一个具有基元的图形对象,例如Lines and Polygons,如何删除其中一些?要向现有图形对象添加更多图元,我们可以使用Show, 例如:Show[g, g2] where g2是另一个具有其他图元的图形对象。但是如何删除不需要的原始对象呢?看看下面的内容

ListPlot3D[{{0, 0, 1}, {1, 0, 0}, {0, 1, 0}, {1, 1, 0}}, Mesh -> {1, 1}]

现在,对于输入表单:

InputForm[
   ListPlot3D[{{0, 0, 1}, {1, 0, 0}, {0, 1, 0}, {1, 1, 0}}, Mesh -> {1, 1}]
 ]

要从此对象创建线框,我们所要做的就是删除多边形。另外,我们还可以删除顶点法线,因为它们对线框没有贡献。

请注意,要制作线框,我们可以简单地设置PlotStyle -> None作为一个选项ListPlot3D。这摆脱了Polygons 但不删除VertexNormals.

为了澄清问题。鉴于

 g = ListPlot3D[{{0, 0, 1}, {1, 0, 0}, {0, 1, 0}, {1, 1, 0}}, Mesh -> {1, 1}]

如何从其中删除一些图形基元g以及如何删除一些选项,即VertexNormals?注:选项VertexNormals是一个选项GraphicsComplex.

如果这是不可能的,那么下一个问题可能是,如何获取用于生成的数据g使用从以下获得的一些数据生成一个新的图形对象g.


一种方法是使用转换规则。鉴于你的

im = ListPlot3D[{{0, 0, 1}, {1, 0, 0}, {0, 1, 0}, {1, 1, 0}},  Mesh -> {1, 1}]

你可以做

newim = im /. {_Polygon :> Sequence[], (VertexNormals -> _) :> Sequence[]}

或者,更紧凑地使用Alternatives http://reference.wolfram.com/mathematica/ref/Alternatives.html:

newim = im /. _Polygon | (VertexNormals -> _) :> Sequence[]

你也可以使用DeleteCases获得类似的效果:

newim = DeleteCases[im, (_Polygon | (VertexNormals -> _)), Infinity]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mathematica:删除图形基元 的相关文章

随机推荐