渐近线中的不透明度

渐近线中的不透明度

考虑一个 MWE:

在此处输入图片描述

这是某个图表的一部分,所以看起来还未完成,但没关系。我试图让这个例子变得非常简洁。

\documentclass{article}%
%============================================================
\usepackage{asymptote}
\usepackage[utf8]{inputenc}
\usepackage{color}
%============================================================
\begin{document}
\begin{asy}
settings.outformat = "pdf";
settings.prc = false;
settings.render = 16;
import three;
import bsp;
texpreamble("\usepackage{euler,beton}");
size(5cm, 0);
currentprojection=orthographic((5,4,3));

path3 pl =plane((0,-2,0),(-2,0,0),(0,1,0));
path3 pl1=rotate(-28,X)*pl;
path3 pl2=rotate(-56,X)*pl;
path3 pl3=shift(-0.3*normal(pl1))*pl1;

triple[] asd=intersectionpoints(pl2,pl3);
triple A=asd[1];
triple B=asd[0];

triple[] asf=intersectionpoints(pl,pl2);
triple C=asf[1];
triple D=asf[0];

triple[] asg=intersectionpoints(pl,pl3);
triple E=asg[1];
triple F=asg[0];

path3 q11=(D -- -Y -- C-Y -- C -- cycle);
surface sq11=surface(q11);
draw(sq11,white+opacity(.6),light=nolight);
draw(D -- -Y -- C-Y -- C--cycle);

path3 q31=(D--C--A--B--cycle);
surface sq31=surface(q31);
draw(sq31,white+opacity(.6),light=nolight);
draw(D--C--A--B--cycle);

\end{asy}

\end{document}

可以。但我希望它是矢量图形(出版社要求)。当我更改

settings.render = 16;

进入

settings.render = 0;

(因为这就是我的图形矢量化的原因)它会刹车:

在此处输入图片描述

如果我将其保留为矢量(settings.render = 0;),但用不透明度选项注释所有行,它就可以起作用:

在此处输入图片描述

但这不是我想要的。

如何为这些平面制作具有不透明度选项的矢量图片?

为方便您使用,附有注释示例:

\documentclass{article}%
%============================================================
\usepackage{asymptote}
\usepackage[utf8]{inputenc}
\usepackage{color}
%============================================================
\begin{document}
\begin{asy}
settings.outformat = "pdf";
settings.prc = false;
settings.render = 0;
import three;
import bsp;
texpreamble("\usepackage{euler,beton}");
size(5cm, 0);
currentprojection=orthographic((5,4,3));

path3 pl =plane((0,-2,0),(-2,0,0),(0,1,0));
path3 pl1=rotate(-28,X)*pl;
path3 pl2=rotate(-56,X)*pl;
path3 pl3=shift(-0.3*normal(pl1))*pl1;

triple[] asd=intersectionpoints(pl2,pl3);
triple A=asd[1];
triple B=asd[0];

triple[] asf=intersectionpoints(pl,pl2);
triple C=asf[1];
triple D=asf[0];

triple[] asg=intersectionpoints(pl,pl3);
triple E=asg[1];
triple F=asg[0];

path3 q11=(D -- -Y -- C-Y -- C -- cycle);
surface sq11=surface(q11);
//draw(sq11,white+opacity(.6),light=nolight);
draw(D -- -Y -- C-Y -- C--cycle);

path3 q31=(D--C--A--B--cycle);
surface sq31=surface(q31);
//draw(sq31,white+opacity(.6),light=nolight);
draw(D--C--A--B--cycle);

\end{asy}

\end{document}

供参考:这是我的问题

答案1

我不知道这个例子是否适用于 Asymptote 或/和 Ghostscript 的先前版本。似乎透明度、render=0 和表面不能一起工作。

然而,与以下示例不同渐近线中的平面交点。在此示例中,您使用bsp包和透明度、render=0、bsp 可以一起工作。您的 MWE 变成

      settings.outformat = "pdf";
      settings.prc = false;
      settings.render = 0;
      import three;
      import bsp;
      texpreamble("\usepackage{euler,beton}");
      size(10cm);


      currentprojection=orthographic((5,4,3));

      path3 pl =plane((0,-2,0),(-2,0,0),(0,1,0));
      path3 pl1=rotate(-28,X)*pl;
      path3 pl2=rotate(-56,X)*pl;
      path3 pl3=shift(-0.3*normal(pl1))*pl1;

      triple[] asd=intersectionpoints(pl2,pl3);
      triple A=asd[1];
      triple B=asd[0];

      triple[] asf=intersectionpoints(pl,pl2);
      triple C=asf[1];
      triple D=asf[0];

      triple[] asg=intersectionpoints(pl,pl3);
      triple E=asg[1];
      triple F=asg[0];

      path3 q11=(D -- (-Y) -- (C-Y) -- C -- cycle);
      //surface sq11=surface(q11);
      //draw(sq11,yellow);//+opacity(.6));
      //draw(D -- -Y -- C-Y -- C--cycle);
      path3 q31=(D--C--A--B--cycle);
      face faces[];
      filldraw(faces.push(q11),project(q11),white+opacity(.5));
      filldraw(faces.push(q31),project(q31),white+opacity(.5));
      //draw(D--C--A--B--cycle,black+1bp);
      add(faces);

结果是矢量图形。

矢量图形和 3D 图形非常难以管理。使用多边形似乎可以,但需要一些特定的例程。

在此处输入图片描述

相关内容