我在做什么
我有一个场景,它通过算法绘制一个prism
具有六边形横截面的 a 和围绕中心一个的 n 层这样的棱镜,这样所有的棱镜一起形成一个更大的六边形形状。
现在,每一排棱镜与下一排棱镜的位移是 sqrt(3)/2 的倍数(因为一个棱镜的尺寸是 <1,sqrt(3)>,因为 sin(120/2°) = sqrt(3 )/2)。
我想,与棱镜尺寸相关的结果位置的浮点值并不总是以在物体之间产生零间隙的方式完全一致。因此,当我将整个东西包裹在 a 中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 中想要的方式工作吗?
- 我在这里做一些非常愚蠢的事情吗?