Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Floating point POVray:如何可靠地创建仅接触表面的对象的良好合并? 我在做什么_Floating Point_Raytracing_Povray_Csg - Fatal编程技术网

Floating point POVray:如何可靠地创建仅接触表面的对象的良好合并? 我在做什么

Floating point POVray:如何可靠地创建仅接触表面的对象的良好合并? 我在做什么,floating-point,raytracing,povray,csg,Floating Point,Raytracing,Povray,Csg,我有一个场景,用算法画了一个六边形截面的棱柱体,中间的棱柱体周围有n层这样的棱柱体,所有的棱柱体一起形成一个更大的六边形 现在,每行棱镜从下一行偏移sqrt3/2的倍数,因为一个棱镜的尺寸为,因为sin120/2°=sqrt3/2 我认为,与棱镜尺寸相关的最终位置的浮动值并不总是完全一致,从而在对象之间产生零间隙。因此,当我把整个东西包装在一个集合中,并将其指定为透明的玻璃材质时,我不会得到一个平滑、均匀的形状。根据n的值,我会在合并对象内部的边缘或某些曲面的阴影处,或两者都会出现抖动 这是我代

我有一个场景,用算法画了一个六边形截面的棱柱体,中间的棱柱体周围有n层这样的棱柱体,所有的棱柱体一起形成一个更大的六边形

现在,每行棱镜从下一行偏移sqrt3/2的倍数,因为一个棱镜的尺寸为,因为sin120/2°=sqrt3/2

我认为,与棱镜尺寸相关的最终位置的浮动值并不总是完全一致,从而在对象之间产生零间隙。因此,当我把整个东西包装在一个集合中,并将其指定为透明的玻璃材质时,我不会得到一个平滑、均匀的形状。根据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还有一个联合操作,它与merge非常相似,但看起来有点不同。你可能还想试试看它是否能给你带来更好的结果


在图形方面,尝试几种方法以查看哪些外观更好并不少见-

我很确定标准的方法是让你的形状重叠更多,或者根本不接触。对于您的具体情况,您可以使棱镜稍微大一点或稍微小一点

Povray还有一个联合操作,它与merge非常相似,但看起来有点不同。你可能还想试试看它是否能给你带来更好的结果


在图形方面,尝试几种方法以查看哪些外观更好并不少见-

在我们公司,我们遇到了同样的问题。我们的解决方案是一个可以产生非常小的正价值的方法。这就保证了1两个曲面永远不会重合2,即使你在两个曲面上都添加了那么小的值。

在我们公司,我们遇到了同样的问题。我们的解决方案是一个可以产生非常小的正价值的方法。这保证了1曲面永远不会重合2,即使将该小值添加到两个曲面。

并集和合并之间的区别在于,合并会删除所有内部曲面,而并集不会。因此,合并是这两个选项中唯一适合透明的选项。合并和合并的区别在于合并会删除所有内部曲面,而联合不会。因此,合并是两种方法中唯一适合透明度的方法。