2015-10-06 16 views
9

これは私がここで尋ねた最初の質問です!私が何とかそれを間違えたならば、事前にお詫びします。three.js飛行機の奇妙な現象

私は球をthree.jsに積み重ねるプログラムを書いています。

各球はランダムに生成された(一定の範囲内)のxおよびz座標で始まり、接地面上の高Y座標。球の各頂点から光線を投射して、それが既存のメッシュと交差する前にどのくらい下に落ちるかを確認します。各球について

、私はその位置に「ドロップ」して、それは遠くに落ちることができる場所を確認、80点の異なるランダムXZ位置にそれをテストし、そして。

これは、このようなバブルの塔を作成することを意図している:しかし、私はバブルの半径が非常に小さく、大きなタワーのベース・ディメンション作るとき、この問題が発生したことに気づいた

image of regular bubble tower

image of bubbles clustered towards the edges of square

私は80から再帰を断る場合、この効果はそれほど明らかです。なんらかの理由で、three.jsは球がベーススクエアの角にさらに落ちると考えるようです。原点は正方形の中心に正確にあります - おそらくこれは関連性があります。

私がレイキャスターから受け取ったすべての秋の距離をログに記録すると、実際には正方形の中心から遠ざかるほど大きくなりますが、小数点第11位または第12位に限られます。

これは私が解決しようとしている問題ではありません(私は最大のものを選ぶ前に、小数点以下10桁目までの距離を丸めることができます)。誰がなぜこれが起こっているのか知っていますか?誰かが前にこれに似た何かを見つけましたか?

EDIT:

原点は、ベース広場の中心にもはやであるように、私はすべてをシフトするために自分のコードを編集しない

image of edited code

だから私は思考をで修正しています...この現象は、ボールが落下している表面に関連するものではなく、起点からの距離と関係があるでしょうか?

+2

私はthree.jsについて何も知らないが、これが聞こえます浮動小数点精度の問題のように。素晴らしい最初の質問btw、歓迎。 – Rotem

+0

ありがとう!これは私が大したことを知っているものではありません。浮動小数点の精度を根拠から説明する良いリソースにリンクできますか? – Martha

+0

ユニットに使用している大きさのオーダーを増やすことができます。それは確かにX^2 + Z^2の機能のように見える – Blaise

答えて

0

確かに、あなたが見ているパターンは、あなたの塔底部のコーナーとエッジは、あなたがボールを落としている原点から遠いため、正確です。あなたは垂直方向の「脚」直角にあなたがメッシュ床の上に直接、以下の点にまでボールをドロップしているから、原点からライン(になっている直角三角形を(下の画像を参照)を作成しています床 - したがって名前、直角三角形)。 斜辺は常に直角三角形の最も長い足、およびfutherアウトだけで、原点を下回る地点からキャストあなたの光線で、斜辺が長くなり、そしてより多くのあなたのアルゴリズムが優先されます、より長い距離(どんなに分数)。斜辺の測定は、今でも大きな成長できるよう、タワーベースのサイズを大きく

は、この効果を誇張だろう。今、各ボールができるだけ多くのスペースを取っていない、との角にそう遠くmeasurmentsがいるので、より大きなボールが早く、彼らは同じように記入しませんようにも、あなたが見ているパターンを有利に働くボールのサイズを小さく今度はもっと多くのボールが端に集まり、残りのスペースを埋めるでしょう。

片側にあなたの落下の原点を移動するか、ボールが最初にこれらの離れた場所に記入するように別のは、反対側の側面やコーナーへの長距離(斜辺)を作成します。

サンプルサイズを80から20に減らすと効果が低下する理由は、ボールが落ちる可能性のある遠い場所(オッズゲーム)を検出する機会が少なくなるからです。

直角三角形:

enter image description here

バック・オブ・-ナプキンスケッチ:

enter image description here

+0

こんにちは、あなたの入力をありがとう - しかし、これは問題ではありません。 Iは、接地面上の高ランダムX、Z位置一連の球体を移動して直接下方に距離を確認し、私は、静的および中央球体を維持し、異なるX、接地面上のZ位置までの距離をチェックしません。 – Martha

+1

@Martha - Hmmm。コードスニペットやフィドルを提供することができれば、それがどのように動作しているかを正確に把握できる – gromiczek