2

私がしていること

prismすべてのプリズムが一緒になってより大きな六角形を作るように、六角形の断面と中央のプリズムを囲む n 層のプリズムをアルゴリズムで描画するシーンがあります。

ここで、プリズムの各列は次の列から sqrt(3)/2 の倍数だけずれています (1 つのプリズムの寸法が <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ループがないため、おそらく読むのも非常に苦痛です。

私の質問

  • 表面に接触するだけで重ならない数学的に配置されたオブジェクトをマージする際に、float 値の予測不可能性と不正確さをどのように説明すればよいですか?
  • これはPOVrayで私が望むように動作するはずですか?
  • 私はここで非常に愚かなことをしていますか?
4

2 に答える 2

0

標準的なアプローチは、シェイプをさらにオーバーラップさせるか、まったく触れないようにすることだと確信しています。特定のケースでは、プリズムをわずかに大きくするか、わずかに小さくすることができます。

Povray には、「マージ」と非常によく似た「ユニオン」操作もありますが、見た目が少し異なります。また、より良い結果が得られるかどうかを確認するために試してみることもできます。

グラフィックスでは、いくつかのアプローチを試して、より良く見えるものを確認することは珍しくありません。:-)

于 2010-01-29T18:45:06.023 に答える