如何创建简单的 3D 模型?

如何创建简单的 3D 模型?

我想重现下面的图像,但另外标有“轴距 $w$”和“轮距 $t$”。

在此处输入图片描述

维基百科图片来源

我已经尽力了pst-solides3d,但结果却更糟糕(而且我现在甚至没有尝试写文字):

在此处输入图片描述

来源在这里

似乎没有任何可能用 TikZ 来实现这一点(参见例如这个问题- 我不想考虑如何仅使用 2D 图形来创建 3D 模型)。

我想知道一种方便的方法来创建描述几何情况的 3D 图像。因此,我需要基本的几何对象(圆柱体、长方体、球体、圆锥体)、一种简单的方法来更改视点、箭头、可以放置在 3D 中的文本(如第一幅图所示)以及(如果可能)一种像在 LaTeX 中一样写入变量的方法。

我考虑过使用 Blender 或 POV-Ray,但两者似乎都相当复杂,当我遇到困难时,我不知道从哪里开始/问问题。我也不知道如何像在 LaTeX 中那样编写变量。

我的问题

您是否知道如何使用其他pst-solides3dLaTeX 包或任何其他 LaTeX 包获得与第一幅图像类似的结果?

如果没有,你知道 Blender / POV-Ray 或任何其他软件是否

  • 能够创建 3D 模型(它们被称为线框模型吗?),
  • 免费(不一定是开源的,但我更喜欢它),
  • 适用于Linux,
  • 能够创建 PDF / SVG / TEX 文件,
  • 有良好的文档记录,
  • 一个论坛(最好是 StackExchange 网站),当我不知道如何继续时可以在那里提问?

答案1

看一下渐近线. 它对 3D 图形非常强大,并且可以嵌入到 Latex 中。

\documentclass{standalone}
\usepackage{asymptote}

\begin{document}

\begin{asy}[width=10cm,height=10cm]

import solids;
import labelpath3;

// Set page size
size(0,150);

// Lighting
currentlight=Viewport;

real wi = 4;
real le = 4;

material m = material(grey, yellow, black, orange);

triple[] wheels = {(-le/2,-wi/2,0),
           (-le/2,wi/2,0),
           (le/2,-wi/2,0),
           (le/2,wi/2,0) };

// lines
draw((-le/2,wi/2,0)--(-le/2,wi,0));
draw((le/2,wi/2,0)--(le/2,wi,0));

// wheels
for(triple p : wheels) {
  draw(shift(p)*rotate(90,(1,0,0))*
       scale(1,1,0.2)*shift((0,0,-0.5))*unitcylinder,m);
  draw(shift(p)*rotate(90,(1,0,0))*
       shift((0,0,-0.1))*unitdisk,m);
  draw(shift(p)*rotate(90,(1,0,0))*
       shift((0,0,0.1))*unitdisk,m);

}

// axes
draw(shift(-le/2,0,0)*rotate(90,(1,0,0))*
     scale(0.1,0.1,wi)*shift((0,0,-0.5))*unitcylinder,m);
draw(shift(le/2,0,0)*rotate(90,(1,0,0))*
     scale(0.1,0.1,wi)*shift((0,0,-0.5))*unitcylinder,m);

// box
draw(scale(5,1,1)*shift(-0.5,-0.5,-0.5)*unitcube,m);

draw((-le/2,0.9*wi,0)--(le/2,0.9*wi,0),Arrows3);
draw(scale(0.8,1,1)*labelpath("wheelbase $w$",(le/2,wi,0)--(-le/2,wi,0)));

\end{asy}


\end{document}

结果如下:

在此处输入图片描述

相关内容