1

私はこのフォーラムに初めて参加し、英語のネイティブ スピーカーではありません。:)

現時点で直面している課題は次のとおりです。2 点間の与えられた距離のセットに基づいて、3D ユークリッド空間内のまだ未知の点の (おおよその) 相対座標を計算したいと考えています。私の最初のアプローチでは、可能な複数のソリューションを無視して、最初のソリューションをランダムに取得したいと考えています。

例:与えられた距離のセット:(直角三角形を底辺とするピラミッドを作成していると思います)

P1-P2-距離

  • 1-2-30
  • 2-3-40
  • 1-3-50
  • 1-4-60
  • 2-4-60
  • 3-4-60

Step1: では、これらの点の相対座標をどのように計算すればよいでしょうか?
最初のポイントが 0,0,0 になるので、2 番目のポイントは 30,0,0 になると考えました。
その後、ポイント 1 と 2 からポイント 3 までの距離 (それぞれ 50 と 40) を持つ 2 つの円の交点を見つけることによって、3 番目のポイントを計算できます。どうすれば数学的にそれを行うことができますか? (ただし、頭の中で状況を簡単に表すために、これらの単純な数字を使用しました)。その上、正しい数学的方法で答えを得る方法がわかりません.3番目のポイントは30,40,0です(または30,0,40ですが、無視します)。
しかし、4 点目を獲得するのはそれほど簡単ではありません。ポイントを取得するには、交差を計算する際に 3 つの球体を使用する必要があると考えましたが、どうすればよいですか?

ステップ 2: この「単純な」例を計算する方法を理解した後、さらに未知の点を使用したいと思います。自由度が原因で座標を計算できない場合は、既知の距離に関して、ランダムに選択したものを除いてすべての可能性を無視したいと思います。

ステップ 3 : 最終段階は次のようになります。実際の状況により、測定された各距離は少し不正確です。したがって、特定のポイントのペアに対して 1 を超える距離がある場合、距離は平均化されます。しかし、距離が不正確なため、ポイントの正確な (相対的な) 位置を特定するのが難しい場合があります。したがって、さまざまな可能な場所を「最適な」場所に平均化したいと思います。

私の課題を一歩一歩進めるのを手伝ってもらえますか?

4

3 に答える 3

1

三角法、具体的には「余弦定理」を使用する必要があります。これにより、三角形の角度がわかり、3番目と4番目のポイントを解くことができます。

ルールは次のように述べています

c^2 = a^2 + b^2 - 2abCosC

ここで、a、b、cは辺の長さ、Cは辺cの反対側の角度です。

あなたの場合、1-2と1-3の間の角度、つまり(0,0,0)で交差する2本の線の間の角度が必要です。3-4-5の三角形があるため、90度になりますが、次のことを証明しましょう。

50^2 = 30^2 + 40^2 - 2*30*40*CosC
CosC = 0
C = 90 degrees

これは、線(0,0,0)-(30,0,0)と(0,0,0)-点3の間の角度です。その線に沿って辺1〜3の長さ(50)を伸ばすと、2番目の点(0,50,0)が得られます。

4番目のポイントを見つけるのは少し難しいです。私が考えることができる最も簡単なアルゴリズムは、最初に点の(x、y)成分を見つけることであり、そこからz成分はピタゴラスを使用して簡単です。

(x、y、0)平面上に、ポイント4の真下にあるポイントがあると考えてください。このポイントを5と呼びます。これで、3つの直角三角形1-5-4、2-5を作成できます。 4、および3-5-4。

あなたは1-4、2-4と3-4の長さを知っています。これらは直角三角形であるため、比率1-4 : 2-4 : 3-4はに等しくなり1-5 : 2-5 : 3-5ます。三角法を使用して点5を見つけます-「正弦定理」は1-2と1-4、2-1と2-4などの間の角度を与えます。

「正弦定理」は、(直角三角形で)次のように述べています。

a / SinA = b / SinB = c / SinC

したがって、三角形1-2-4の場合、長さ1-4と2-4はわかりませんが、比率はわかります1-4 : 2-4。同様に、あなたは比率2-4 : 3-41-4 : 3-4他の三角形を知っています。

ポイント4を解くのはあなたに任せます。このポイントが得られたら、ピタゴラスを使用して4のz成分を簡単に解くことができます。 zコンポーネント。

于 2011-02-11T00:37:44.517 に答える
1

最初に、すべての点のペア間の距離を知っていると仮定します。

あなたが言うようにA、原点として 1 つの点 ( ) を選択Bし、x 軸に沿って 2 番目の点 ( ) を配置Cし、xy 平面に沿って 3 番目の点 ( ) を配置できます。C の座標は次のように解くことができます。

given: distances ab, ac, bc
assume
A = (0,0)
B = (ab,0)
C = (x,y)  <- solve for x and y, where:
  ac^2 = (A-C)^2 = (0-x)^2 + (0-y)^2 = x^2 + y^2
  bc^2 = (B-C)^2 = (ab-x)^2 + (0-y)^2 = ab^2 - 2*ab*x + x^2 + y^2

-> bc^2 - ac^2 = ab^2 - 2*ab*x
-> x = (ab^2 + ac^2 - bc^2)/2*ab
-> y = +/- sqrt(ac^2 - x^2)

{A,B,C}これが正確に機能するためには、ポイントが直線上にあるか、直線に近い場合を避ける必要があります。

3 空間の追加点の解法も同様です。ピタゴラスの式を距離に展開し、2 次要素をキャンセルして、結果の線形システムを解くことができます。ただし、これは手順 2 と 3 に直接役立つわけではありません...

残念ながら、ステップ 2 と 3 の行儀の良い正確な解決策もわかりません。あなたの全体的な問題は、通常、過剰な制約 (ノイズの多い距離の競合による) と制約不足 (距離の欠落による) の両方になります。

反復ソルバーを試すことができます。すべてのポイントをランダムに配置することから始め、現在の距離を指定された距離と比較し、それを使用して一致を改善するようにポイントを調整します。これは最適化手法なので、数値最適化に関する本を調べます。

于 2011-02-14T04:10:08.913 に答える
0

ノード間の距離 (システムの固定部分) とタグ (モバイル) までの距離がわかっている場合は、三辺測量を使用して x、y 位置を見つけることができます。

私は測距機能を持つ Nanotron 無線モジュールを使用してこれを行いました。

于 2011-02-13T10:08:03.613 に答える