Что я делаю
У меня есть сцена, которая алгоритмически рисует prism
с шестиугольным поперечным сечением и n слоев таких призм, окружающих центральный, так что все призмы вместе образуют большую шестиугольную форму.
Теперь каждый ряд призм смещается от следующего на кратное sqrt (3) / 2 (поскольку размеры одной призмы <1, sqrt (3)>, потому что sin (120/2 °) = SQRT (3) / 2).
Я полагаю, что значения с плавающей точкой результирующих позиций по отношению к размерам призм не всегда точно совпадают так, чтобы образовался нулевой зазор между объектами. Следовательно, я не получаю гладкую, однородную форму, когда оборачиваю все это в merge
и назначаю ему прозрачный стеклянный материал. В зависимости от значения n, я получаю странную странность по краям внутри объекта слияния, или тени некоторых поверхностей, или обоих.
Это фрагмент из блока комментариев в начале моего кода, который объясняет сцену в искусстве ASCII:
__
__/ \__
__/ \ 1/ \__
/ \13/ \ 6/ \
\17/ \ 2/ \10/
/ \14/ \ 7/ \ #3 is at <0,0,0>
\18/ \ 3/ \11/
/ \15/ \ 8/ \
\19/ \ 4/ \12/
\16/ \ 9/
\ 5/
Весь код слишком длинный для вставки, но он доступен здесь . Наверное, читать очень больно, потому что я плохой кодер и потому что POVray не имеет циклов #for
.
Мой вопрос (ы)
- Как я могу учесть непредсказуемость и неточность значений с плавающей точкой при объединении математически расположенных объектов, которые только касаются поверхности, но не перекрываются?
- Это даже должно работать так, как я хочу в POVray?
- Я здесь что-то очень глупо делаю?