2012-04-26 4 views
0

全体的な目標:3次元空間内の点のリストを与えると、点の半径が与えられたときにその点の周りに球を生成し、次に2つの間にスペースがあるかどうかを文法的にチェックする必要があります特定の点を与えられたより多くの球。球の3次元グリッドを表現する

問題点(球の中心を表す)のグリッドと周囲の球を表すデータ構造を考えるのは難しいですが、これらは必ずしも穴の番号ではありません。

例データ:
ポイントA:(-3、0.25、4)半径:1.35
ポイントB:(5、6.35、1)半径:2
点C(1、0、 - 1)半径:.5

私の元のアイデアは、一緒に追加された軸の最大値と最小値の絶対値を、必要最小限の精度で割ったサイズの整数の3次元配列です。次に、変換係数を使用して、配列位置(整数全体)から、探していた点の小数点位置に変換します。私は球が球の中心の周りに存在することを表すいくつかのデータで配列を埋めるでしょう。

私が探しているのは、非整数のこの3dグリッドを表現するために使用するデータ構造です。私のテクニックは正しいとは思わない。

これはJava版です。

ご協力いただきありがとうございます!

答えて

0

3次元座標x、y、z(3d-point)と半径を指定しただけで、点が球の中にあるかどうかを評価するのに(3dimensional)距離を使用するのはなぜですか? ここにユースケースがないのですか?これは次のように聞こえる:「特定の点が与えられた2つ以上の球の間にスペースがあるかどうかをチェックする」

0

私は実際に今週早く似たようなことをしました。 私がしたことは、2点が許される最小距離を決定することです(私が正しく理解すれば、あなたの2つの球の半径を足して見つけてください)。これを使用して、(0、0、0)に開始球を使用して球の無作為なフィールドを作成し、それから余分な球を徐々に追加します。 私の場合(これも同様に必要かどうかわからないため)、私は最大距離も持っていました。私は既に受け入れられている球の座標をシフトし、距離が一致しているかどうかを確認しました。

ので、要約する:それはあなたの間隔の制限 を満たしている場合

  1. を出発点
  2. はランダムに既存のポイントの一つ
  3. チェックするために(特定の範囲内)ポイントを配置しまし
  4. 球が足りなくなるまで2-3を繰り返します。

希望は誰にも役立ちます。

関連する問題