Какова формула, которая используется three.js чтобы создать шаблон, который виден, когда в SageMath показаны две перекрывающиеся 2-D поверхности?

#three.js #sage

Вопрос:

Я пытаюсь понять рисунок (похожий на отпечаток животного), который показывает, когда две разные цветные плоскости нанесены (почти) на одну и ту же плоскость. Какова формула, которую использует SageMath-используя three.js-для создания шаблона, показанного на графике? Область вопросов/поддержки SageMath отправила меня в этот раздел поддержки для получения ответов.

Пример: Здесь одна плоскость немного больше-что заставляет SageMath показывать их обоих, но с рисунком. Кроме того, при перемещении/манипулировании графиком с помощью мыши шаблон меняется. Какую формулу или информацию использует SageMath (three.js) использовать для отображения шаблона?

Я использовал сотовый сервер Sage онлайн, чтобы построить это (ниже) на https://sagecell.sagemath.org/:

 M = implicit_plot3d(lambda x,y,z: x, (-15,15), (-15,15), (-15,15), rgbcolor= (0.0, 1.0, 0.0), frame=true) 
N = implicit_plot3d(lambda x,y,z: x, (-15,15), (-15,15), (-15,15.5), rgbcolor= (0.0, 0.0, 1.0), frame=true) 
M N
 

Спасибо за любую информацию, которую вы можете предоставить!

Ответ №1:

Я не очень хорошо знаком с Сейджем, но, похоже, это тот случай z-fighting .

Идея в основном заключается в том, что плоскости настолько близки друг к другу (и в данном случае занимают одно и то же пространство!), что камера, используемая для рисования сцены, испытывает проблемы с выбором конкретной плоскости для каждого из пикселей. И поэтому «шаблон» — это просто случайные сбои, и он меняется при движении, потому что вычисление для выбора того, какая плоскость «впереди», меняется для каждого угла.

Вы можете прочитать более подробно здесь.

Теперь шаблон действительно напоминает мне о «шумовых шаблонах», которые могут вас заинтересовать. Для этого есть много ресурсов, хорошим местом для начала могла бы стать книга шейдеров.

Комментарии:

1. Ваш комментарий очень помог мне-особенно ссылка на книгу шейдеров. Кроме того, информация о z-fighting очень интересна! Забавно, что я на самом деле пытаюсь использовать z-борьбу-и, похоже, в основном это явление, которого большинство пытается избежать. Большое спасибо!

2. Нет проблем! Рад, что смог помочь! Не забудьте отметить ответ как отвеченный 😉