将 Asymptote 转换为 PDF 后,轴出现在绘图后面

将 Asymptote 转换为 PDF 后,轴出现在绘图后面

我正在尝试将我的图形从 Asymptote 转换为 PDF。在 Asymptote 中,它看起来不错。然而,在 PDF 中,轴出现在图形后面。

我使用以下命令来生成 PDF:

asy.exe -f pdf -render 0 fig.asy

梅威瑟:

import graph3;
import three;
import contour3;
size3(250);
currentprojection=orthographic(-5,-9,3);
currentlight = light(-9, -9, 9);
triple v1 = (1, 0, 1);
triple v2 = (0, 1, 1);
triple v3 = (2, 2, 2);
draw(surface(v1--v2--v3--cycle),gray(0.9));
draw(v1--v2--v3--cycle,currentpen+1);
dot(v1);
dot(v2);
dot(v3);
xaxis3("$x$", 0, 2.7, OutTicks(), arrow=Arrow3);
yaxis3("$y$", 0, 2.7, OutTicks(NoZero), arrow=Arrow3);
zaxis3("$z$", 0, 2.7, OutTicks(NoZero), arrow=Arrow3);

它在 Asymptote (版本 2.38) 中的样子: 它在 PDF (Adobe Reader) 中的样子:

非常感谢您的任何想法或建议!

答案1

使用-render=0无法自动管理可见/隐藏面。它是 3D 场景的 2D 投影。唯一的优势是矢量化输出。当您单击 pdf(使用 Adob​​e)时,会启动 3D 渲染引擎,即 Adob​​e 的 PRC 引擎。如果您打印或导出输出,它将是位图图像,而不是矢量化的。主要优势是支持可见/隐藏面的 3D 渲染。(事实上,我不明白为什么-render=0 -f pdf要叠加 pdf 图形和 prc)。它与 相同-render=nn>0OpenGL 引擎,输出是位图图像。(见Asymptote 的错误

只要付出一些努力,对于简单的 3D 图片,您可以自己管理可见/隐藏的面/线。但您必须自己做(绘画算法,取决于眼睛……)。

在非常特殊的情况下,可以zaxis通过放置选项来绘制above=true。尝试使用

zaxis3("$z$", 0, 2.7, OutTicks(NoZero), arrow=Arrow3,above=true);

相关内容