用于绘制复杂几何形状的软件

平面设计 墨景 形状 数学
2022-01-19 09:47:28

我正在写我的硕士论文,它大量借鉴了几何学。特别是,我需要创建类似于所附图表的图表。

我一直在考虑哪些工具可能会派上用场:已经考虑过 R 和 Python 绘图,并简要考虑过 Inkscape(我从未使用过)。

您会推荐哪些工具来重新创建下图和/或绘制类似的图?

在此处输入图像描述

[来源:https ://commons.wikimedia.org/wiki/File:Minimal_surface_curvature_planes-en.svg ]

2个回答

正如您可能已经猜到并且至少有一位长期成员已经确认的那样,Inkscape 也可用于制作几何插图。但是你没有简单的方法来输入你想要看到渲染为 2D 绘图的所需 3D 形状的公式。只能输入 XY 平面形状作为参数曲线。

3D 构图的图像必须手动绘制,或者您可以从其他地方导入它们并使用 Inkscape 进行着色和插入注释。

那个“其他地方”可以是一个数学程序,可以输出 SVG 或 PDF 矢量格式的场景。我没有这样的软件,但是可视化一些数学关系的可接受的场景当然也可以在 CAD 软件中构建。这是一种尝试制作类似于您的示例的东西。这是最初的结果:

在此处输入图像描述

没有精细的渐变色,只有纯色。但没有什么能阻止手动插入渐变。

在 CAD 程序中,我在平面上绘制了几条样条线:

在此处输入图像描述

矩形只是用于快速调用原始绘图平面的参考,它没有用作绘图中的一部分。

倒置的 U 是即将到来的曲面的端部和中间轮廓,浅 U 是混合脊。这是曲面顶点的拉伸路径。在 CAD 术语中,通过沿一个或多个脊柱混合曲线来制作曲面也称为“放样”。

要进行混合,必须将曲线移动到不同的平面并旋转到它们的最终位置:

在此处输入图像描述

当曲线旋转时,样条线周围的那些点和线弹出可见,而无需询问(如果未禁用)。它们是样条曲线的内部定义部分。

在下一个图像中,命令进行混合。我只有一个点的脊椎,但可以根据需要添加它们以获得更明确的边缘形式。您的示例将需要至少 2 个底部边缘:

在此处输入图像描述

矩形光栅不是绘图的一部分,它是自动显示的参考,供那些想知道哪些是默认表面纹理映射坐标线的人使用。这个例子中没有使用。

稍后需要样条线,因此应防止它们在混合中消失或将副本复制并粘贴到其原始位置。

此阶段需要参考平面。用它可以轻松绘制 3 个矩形平面块,它们在鞍座的平衡点相遇(= 绘制一个,移动它,使中心点位于样条线的交叉处,制作两个旋转副本并将它们拉伸到合适的宽度):

在此处输入图像描述

这开始变得非常混乱。3 条平面切割线中的 2 条已作为构造曲线存在,但仍需要一条。它是表面和水平面之间的交点。当一个人用平面分割表面时,它就会出现。从另一个方向看到的结果:

在此处输入图像描述

平面的几条交叉线也很有用。没有单独的图像。结果见后。

我的 CAD 程序是专业程序的完全受限的免费版本,但仍然可以制作不同的场景用于导出。首先必须决定想要的投影。这类似于您的示例:

在此处输入图像描述

一个有用的场景是完整的线框。它可以打印为矢量 PDF 并在 Inkscape 中打开:

在此处输入图像描述

生成的 PDF 非常复杂,其中充满了嵌套组。幸运的是,Inkscape 有 Extension > Arrange > Deep Ungroup,这使得所有笔画都可以轻松访问。他们需要新的粗细、笔触样式和颜色。结果在第一张图片中。

表面和平面也可以在 Inkscape 中着色。但是在 PDF 中,边界曲线被有害地分裂,人们应该重新加入它们以形成可填充的闭合形状。Inkscape 没有 Illustrator 那样的 Shape Builder,所以应该使用节点工具进行连接。我决定在 CAD 程序中制作一个没有任何线条的彩色场景。飞机变得非常透明(=默认)灰色,表面变成橙色。它变得不那么透明了:

在此处输入图像描述

这也打印为 PDF 并导入到 inkscape。它在彩色线框下分层。

实际上,彩色 PDF 版本是光栅图像。不幸的是,没有可调节的灯光,也没有逼真的渲染,所以我获得适当渐变阴影的唯一可能是使用其他软件进行渲染或手动绘制渐变。我都跳过了。

使用的免费软件 CAD 程序是 DesignSpark Mechanical。这是 SpaceClaim 的严重降级版本。限制之一是只有全局表面透明度。橙色表面通过将其挤压成非常薄的固体而变得不那么透明。固体的透明度可自由调节。

如果您打算自己做,请准备在每个程序中使用一周的时间进行全天练习。如果您从一些非常复杂的软件开始,这远远少于所需的内容,但如果您聘请了一位能够理解数学事物的有能力的插画师,我猜这比所需的要多得多。

我经常为我的论文和讲座做这种示意图。我的工作流程通常涉及以下一些内容

  • 当我可以以编程方式创建整个绘图时,Python 脚本(使用 Matplotlib)。请参阅我的wiki 库

  • 用于复杂 3D 事物的 CAD(我通常使用 FreeCAD)。这允许导出之后可以编辑的 SVG 文件。

  • ParaView 用于复杂的可视化。

  • 当我不关心单位/比例是否完美时,Inkscape 可以获取细节或创建整个事物。

我之前提到的工具(以及 Blender)中最好的部分是它们都允许我使用 Python 编写脚本来自动化事情。

下面是一个类似于我使用 ParaView 创建并在 Inkscape 中编辑的示意图。

在此处输入图像描述

我会说 Inkscape 对于为技术目的创建插图非常有用,但正如评论中提到的,一开始可能很难。