2D問題:デカルト座標系で三角形の3つの端の位置を測定します。次に、システム(三角形)を別のデカルトシステムに移動し、両端の位置を測定します。このデータに基づいて、3番目の端の位置を特定するにはどうすればよいですか?
ありがとう!(そして第二の角度としての悪い英語をお詫びします)
2D問題:デカルト座標系で三角形の3つの端の位置を測定します。次に、システム(三角形)を別のデカルトシステムに移動し、両端の位置を測定します。このデータに基づいて、3番目の端の位置を特定するにはどうすればよいですか?
ありがとう!(そして第二の角度としての悪い英語をお詫びします)
この質問は8年前のものですが、少し曖昧ですが、かなり簡潔に答えられると思います。もし私が出会ったら、誰か他の人が出くわして、実際の本当の答えから利益を得るかもしれません。受け入れられたものではなく。(受け入れられた「回答」に誤って賛成したことをお詫びします。当初は反対票を投じていましたが、質問が実際には少し曖昧であることに気づき、反対票を覆そうとしました。悲しいことに、私の初心者の担当者のせいで、それは実際の賛成票。反対票に値するものではありませんでしたが、賛成票に値するものでもありませんでした。)
したがって、単純なデカルトグリッドまたは参照フレームがあるとします。
そして、その10x10の参照フレーム内に、三角形のオブジェクトがあります。
画像をラベル付けできませんでしたが、この三角形の(a、b、c)座標は、明らかにa =(0,0)、b =(0,4)、およびc =(4,0)です。
ここで、デカルト座標系(グリッド)内でその三角形を移動するとします。
したがって、「b」と「c」の新しい座標がb =(1,5)とc =(5,1)であるとすると、三角形x = x+1とy=y+1を移動しました。 )、「a」とは何ですか?
「a」が(1,1)になることは明らかですが、数学を見ると、
Δb=b2-b1
Δb=(x2、y2)-(x1、y1)
Δb=(1,5)-(0,4)
Δb=(1-0、5-4)
∴Δb=(1,1)または(+ 1、+ 1)
同じ答えに到達する2つの「c」座標に対して同じことを行うと、Δcも(1,1)に等しくなります。したがって、これは平行移動(線形運動)であり、回転ではありません。つまり、Δaも(1,1)!それで:
a2 =a1+Δa
a2 =(0,0)+(+ 1、+ 1)
a2 =(0 + 1,0 + 1)∴</ p>
∴a2=(1,1)
また、画像を見ると、「a」の新しい位置が(1,1)にあることがはっきりとわかります。
しかし、それは単なるリードアップです。あなたの質問は、あるデカルト座標系から別の座標系に変換することでした。10x10の参照フレームがより大きな参照フレーム内にあることを考慮してください。
10x10グリッドを「ローカル」参照フレームと呼ぶことができ、おそらく「グローバル」参照フレーム内に存在します。実際には、このグローバル参照フレーム内に他の「ローカル」参照フレームがいくつかある可能性があります。
ただし、簡単にするために、もちろん、あるデカルト座標系を別の座標系内で検討します。
次に、その「ローカル」参照フレームを「グローバル」参照フレーム内に変換する必要があります。
したがって、「ローカル」では、三角形の(a、b、c)座標は{(0,0)、(0,4)、(4,0)}のままですが、ローカル参照フレームの原点です。グローバル参照フレームの原点と位置合わせされていません!ローカル参照フレームがシフトしました(+ 3.5、+ 1.5)!
さて、私たちの三角形の位置は何ですか?!
基本的に同じようにアプローチします。「ローカル」参照フレームの相対位置は(+ 3.5、+ 1.5)であり、フレームの差を表すためにΔfと呼びます。したがって、グローバル原点に対する三角形はag = al +Δf、bg =bl+Δfになります。 、およびcg = cl +Δf。ここで、(ag、bg、cg)はグローバル参照フレーム内の座標であり、(al、bl、cl)はローカル参照フレーム内の座標です。
これはまったく同じです。三角形の位置に3番目の「z」座標を含めるだけです。
私があなたの最初の質問からしている仮定の1つは、あなたが実際に翻訳について質問していて、8年前にこの質問をしたときにローテーションに興味がなかったということです。
ただし、非常に迅速に、参照フレーム内で2Dオブジェクトを回転させるには、trigを使用する必要があるため、最初に、オブジェクトを回転している場所を決定する必要があります。これを回転軸と呼びます。次に、回転軸がどこにあるかを決定したら、三角形の3つのポイントのそれぞれについて(x、y)を再計算します。
x = r・cosθ
y = r・sinθ
ここで、θはオブジェクトを回転させる角度、「r」は回転軸からのその点の距離、「・」は単に乗算を意味します。
したがって、三角形をピオント「a」を中心に反時計回りに30度回転させると、次のようになります。
しかし、繰り返しになりますが、それはあなたの質問ではありませんでした。あなたの質問は、「2つのポイントの位置を指定して、3番目のポイントの位置を決定する」でした。
何の説明もなしに、あなたがローテーションについて尋ねていたとは思わないという理由だけで、あなたがしていることはあなたが後ろ向きに働くことです:
x = r・cosθの場合、θ= arccos(x / r)
これで回転角が得られ、欠落した点の元の位置に適用してその(x、y)を見つけることができます。また、元の平行移動の例と同様に、あるデカルト座標系から別の座標系まで機能します。つまり、「ローカル」参照フレームがグローバル参照フレーム内で回転する場合、ローカルフレーム内で何も変更されていないように見えても、グローバルフレーム内のオブジェクトのポイントの位置をプロットできます。
また、これは3D参照フレームでも機能します。
そして最後に、デカルトローカル参照フレームが平行移動と回転の両方である場合(ほぼ確実にそうです)、両方の方法を適用して、ポイントを他の(グローバル?)デカルト参照フレームにプロットします。
ああ、たくさん!私たちの脳は、私たちが運転しているときや通りを歩いているときに、これを非常に直感的に行っているので、どこから始めればよいのかわかりません!
平行移動は簡単ですが、軸を横切るときに回転が少し毛むくじゃらになります。物事を簡単にするための1つのトリックは、トリガーをより簡単にするために、オブジェクトを1つの参照フレームから別のフレームに変換することです。
写真で物語を語る:
そして、それはほんの始まりです...
それがお役に立てば幸いです。
これはかなり漠然とした質問ですが、私が正しく読んでいれば、それよりもさらに少ない情報が必要になります。最初の座標系を2番目の座標系に変換する場合は、それを3つの点のそれぞれに適用して、3つの同等の点のそれぞれを見つけます。
そうでなければ、あなたが変容を持っていなければ、それは不可能だと思います。結局のところ、座標系の可能な変換の数は無限であり、2つのポイントの同じ2つの場所でありながら、3番目のポイントの異なる場所になる可能性があります。