Floating point POVray:如何可靠地创建仅接触表面的对象的良好合并? 我在做什么
我有一个场景,用算法画了一个六边形截面的棱柱体,中间的棱柱体周围有n层这样的棱柱体,所有的棱柱体一起形成一个更大的六边形 现在,每行棱镜从下一行偏移sqrt3/2的倍数,因为一个棱镜的尺寸为,因为sin120/2°=sqrt3/2 我认为,与棱镜尺寸相关的最终位置的浮动值并不总是完全一致,从而在对象之间产生零间隙。因此,当我把整个东西包装在一个集合中,并将其指定为透明的玻璃材质时,我不会得到一个平滑、均匀的形状。根据n的值,我会在合并对象内部的边缘或某些曲面的阴影处,或两者都会出现抖动 这是我代码开头的注释块中的一个片段,解释了ASCII艺术中的场景:Floating point POVray:如何可靠地创建仅接触表面的对象的良好合并? 我在做什么,floating-point,raytracing,povray,csg,Floating Point,Raytracing,Povray,Csg,我有一个场景,用算法画了一个六边形截面的棱柱体,中间的棱柱体周围有n层这样的棱柱体,所有的棱柱体一起形成一个更大的六边形 现在,每行棱镜从下一行偏移sqrt3/2的倍数,因为一个棱镜的尺寸为,因为sin120/2°=sqrt3/2 我认为,与棱镜尺寸相关的最终位置的浮动值并不总是完全一致,从而在对象之间产生零间隙。因此,当我把整个东西包装在一个集合中,并将其指定为透明的玻璃材质时,我不会得到一个平滑、均匀的形状。根据n的值,我会在合并对象内部的边缘或某些曲面的阴影处,或两者都会出现抖动 这是我代
__
__/ \__
__/ \ 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还有一个联合操作,它与merge非常相似,但看起来有点不同。你可能还想试试看它是否能给你带来更好的结果
在图形方面,尝试几种方法以查看哪些外观更好并不少见- 我很确定标准的方法是让你的形状重叠更多,或者根本不接触。对于您的具体情况,您可以使棱镜稍微大一点或稍微小一点 Povray还有一个联合操作,它与merge非常相似,但看起来有点不同。你可能还想试试看它是否能给你带来更好的结果
在图形方面,尝试几种方法以查看哪些外观更好并不少见- 在我们公司,我们遇到了同样的问题。我们的解决方案是一个可以产生非常小的正价值的方法。这就保证了1两个曲面永远不会重合2,即使你在两个曲面上都添加了那么小的值。在我们公司,我们遇到了同样的问题。我们的解决方案是一个可以产生非常小的正价值的方法。这保证了1曲面永远不会重合2,即使将该小值添加到两个曲面。并集和合并之间的区别在于,合并会删除所有内部曲面,而并集不会。因此,合并是这两个选项中唯一适合透明的选项。合并和合并的区别在于合并会删除所有内部曲面,而联合不会。因此,合并是两种方法中唯一适合透明度的方法。