Асимптота: Как нарисовать поверхности с более чем четырьмя вершинами без «швов»?

Асимптота: Как нарисовать поверхности с более чем четырьмя вершинами без «швов»?

В Asymptote 3D мне нужно нарисовать поверхности с более чем 4 вершинами, но когда я это делаю, это либо просто не работает (я не могу воспроизвести это в простом примере, но могу привести более сложный случай, где это происходит, если это будет полезно), либо появляется шов, как в примере ниже:

settings.prc = false;
defaultpen(fontsize(10pt));
import three;
import graph3;
import patterns;
size(11cm,0);

currentprojection=perspective((10,-20,10));
currentlight = (3,-2,3);

render render = render(compression=Low, merge = true);

draw(surface((0,0,0) -- (1,0,0) -- (1,1,0) -- (0.5,1.5,0) -- (0,1,0) -- cycle), lightblue+opacity(0.5), render);

Выполнение этой команды

asy -noprc -render 0 -f pdf example.asy

дает следующее изображение:

«Дом», сгенерированный кодом.

Есть ли способ избавиться от темно-синего «шва»?

решение1

Похоже, что "поведение шва" зависит от просмотрщика PDF и -renderопции. Проблемы "шва" возникают с непрозрачностью и -render=0опцией: в зависимости от просмотрщика PDF наложение общей границы двух патчей создает такое поведение.

С -noprcи -render=0у нас есть "шов" с Okular, acroread, gv (изображение векторизовано). Нет "шва" с evince, mupdf, zathura. У меня проблемы с прозрачностью с evince и zathura. mupdf в порядке.

При -noprcиспользовании OpenGL-рендеринга и создании растрового изображения «шва» вообще нет.

Если быть точным, все версии представляют собой обновленную версию Debian Sid.

Как поясняется в документации, -render=0возможности весьма ограничены.

Связанный контент