我正在尝试将我的图形从 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(使用 Adobe)时,会启动 3D 渲染引擎,即 Adobe 的 PRC 引擎。如果您打印或导出输出,它将是位图图像,而不是矢量化的。主要优势是支持可见/隐藏面的 3D 渲染。(事实上,我不明白为什么-render=0 -f pdf
要叠加 pdf 图形和 prc)。它与 相同-render=n
,n>0
OpenGL 引擎,输出是位图图像。(见Asymptote 的错误)
只要付出一些努力,对于简单的 3D 图片,您可以自己管理可见/隐藏的面/线。但您必须自己做(绘画算法,取决于眼睛……)。
在非常特殊的情况下,可以zaxis
通过放置选项来绘制above=true
。尝试使用
zaxis3("$z$", 0, 2.7, OutTicks(NoZero), arrow=Arrow3,above=true);