wolfram-mathematica - 数学: Removing graphics primitives

标签 wolfram-mathematica

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

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

Output

现在,输入表单:

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

Output

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

请注意,要制作线框,我们只需将 PlotStyle -> None 设置为 ListPlot3D 中的选项即可。这会消除Polygon,但不会删除VertexNormals

澄清问题。鉴于此

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

如何从 g 中删除一些图形基元以及如何删除一些选项,即 VertexNormals?注意:选项VertexNormalsGraphicsComplex的一个选项。

如果这是不可能的,那么下一个问题可能是,如何获取用于生成 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 :

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

您还可以使用DeleteCases来获得类似的效果:

newim = DeleteCases[im, (_Polygon | (VertexNormals -> _)), Infinity]

enter image description here

关于wolfram-mathematica - 数学: Removing graphics primitives,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6317253/

相关文章:

debugging - 如何查找 Mathematica 笔记本中发生错误的行?

wolfram-mathematica - Mathematica 中的连接点

wolfram-mathematica - Mathematica 中定积分和不定积分的区别?

wolfram-mathematica - CDF播放器互联网访问配置

wolfram-mathematica - 关于 Manipulate 内部动态同步更新的问题

wolfram-mathematica - 根据 Mathematica 中的第四个变量更新 3 个变量的方法

wolfram-mathematica - 使用 ExportString 转换图形

wolfram-mathematica - Mathematica中Position2D的快速实现

formatting - 我们可以在 Mathematica 的 BarChart 中减少 Bar 的大小宽度吗?

wolfram-mathematica - 重载 Set[a, b] (a = b)