渐近线:路径上的平面 - 角落处有错误绘制的条纹

渐近线:路径上的平面 - 角落处有错误绘制的条纹

我有一个关于 Asymptote 的问题。当我使用 Asymptote 绘制由循环路径定义的平面时,我遇到了一个问题,如下例所示。当我绘制表面时,在表面角落附近可以看到奇怪的条纹。

settings.outformat="png";
settings.render=8;
size(8cm, 0);
import three;

currentprojection = orthographic(0,0,-1,up=-Y,zoom=0.937);

real r=3;
real c = 5;
real w = 1;

pair Pynp = (-w/2, c/2);
pair P1np = (-w/2, w/2);
pair Pxnp = (-c/2, w/2);
pair Pxnn = (-c/2, -w/2);
pair P1nn = (-w/2, -w/2);
pair Pynn = (-w/2, -c/2);
pair Pcyn = (0, -c/2);
pair Pcyp = (0, c/2);

path outline = arc((0,0), r, 90, 270) -- Pcyn -- Pynn -- P1nn -- Pxnn -- Pxnp -- P1np -- Pynp -- Pcyp -- cycle;

path3 outline3 = path3(outline);

surface s = surface(outline); 

draw(outline3, black + linewidth(2));

draw(s, red);

如上例所示,表面由一条循环二维路径定义,该路径由一条圆弧和若干条线段组成。

您能否告诉我这是否是一个已知问题,以及我可以采取什么措施来解决该问题?

我在 Windows 10 平台上使用 Asymptote 2.41。

这是 OpenGL 渲染的屏幕截图。两个角落的黑色条纹清晰可见。这些条纹也出现在我直接从 asy 文件生成的 PNG 文件中。

这是 OpenGL 渲染的屏幕截图。两个角落的黑色条纹清晰可见。这些条纹也出现在我直接从 asy 文件生成的 PNG 文件中。

答案1

我不确定如何解释这个问题。也许在 3D 渲染器、退化三角形或贝塞尔曲面片中?我尝试了命令Arc(大写 A),graph.asy它可以更精确地生成圆弧。圆弧的节点数不同,三角剖分outline(创建曲面所需的)也不同,在 Linux 64 位上使用 Asymptote svn(或多或少),似乎没问题。这里是代码

size(8cm, 0);
import graph;
import three;

currentprojection = orthographic(0,0,-1,up=-Y,zoom=0.937);

real r=3;
real c = 5;
real w = 1;

pair Pynp = (-w/2, c/2);
pair P1np = (-w/2, w/2);
pair Pxnp = (-c/2, w/2);
pair Pxnn = (-c/2, -w/2);
pair P1nn = (-w/2, -w/2);
pair Pynn = (-w/2, -c/2);
pair Pcyn = (0, -c/2);
pair Pcyp = (0, c/2);

path outline = Arc((0,0), r, 90, 270,10) -- Pcyn -- Pynn -- P1nn -- Pxnn -- Pxnp -- P1np -- Pynp -- Pcyp -- cycle;

path3 outline3 = path3(outline);

surface s = surface(outline3); 

draw(outline3, black + linewidth(2));

draw(s, red);

结果

在此处输入图片描述

奥格

相关内容