では、C を A から B への最短経路にする必要があります。A から B への経路は直角三角形の斜辺であり、C にその三角形の逆正接を与える必要があります。これを行うにはどうすればよいですか?式には名前がありますか?
5 に答える
何を求めているのかは明確ではありませんが、ABラインの角度を見つけようとしていると思います。私はあなたが知っている、またはAとBの両方の(x、y)座標を理解できると仮定します。そうしないと、問題を解決できなくなるからです。
ソリューションの大部分を概説したように聞こえます...角度は(y / x)距離のアークタンに等しくなります。したがって、A(y)をAのy座標と見なすと、次のようになります。
arctan ((A(y) - B(y)) / (A(x) - B(x)))
それは役に立ちますか?それとも少し違うものをお探しですか?
編集:注意すべきことの1つは、用語を検討する順序(AからB、またはその逆)などです。これについて慎重に検討する必要があります。そうしないと、何らかの兆候が現れる可能性があります。問題。
ほとんどのシステムには、完全な円の角度を与える(そして垂直方向を処理する)ものがあるので、方向をラジアン(東から反時計回り)で取得するArctan2(dy, dx)と言うでしょう。Arctan2((By - Ay), (Bx - Ax))度の場合は。を掛け360/(2*PI)ます。
A!=Bであることを確認してください。
長さが1つしかなく、ここに隠された仮定がない場合(たとえば、三角形の1つの辺が正規化されている場合)、できません。
興味深い隠された仮定は次のようになります。
- すべての距離は整数です
- 三角形は少なくともそれが高い限り長いです。
その後、問題は単に難しいです。
とが点である場合A、B必要な角度はおそらくx軸に対して取られた角度であり、次のようにして取得します(fortranish名を使用)。
atan((B.y - A.y)/(B.x - A.x))
またはあなたがあなたの図書館にそれを持っているなら
atan2((B.y - A.y),(B.x - A.x))
ゼロ除算をきちんと処理します。
Arctan は度またはラジアンになるため、A と B は (x, y) のような座標を持つ可能性が高くなります。次に、正しく覚えていれば arctan((By - Ay) / (Bx - Ax)) を実行します。ここで、Bx は B などの x 座標です。
A と B に座標がないと、意味のある度数を取得できません。
AからBが直角三角形の斜辺である場合、AからBは点間の直線であるため、AからBへの最短経路にもなります。
接線の逆であるため、隣接する辺の長さを反対側の長さで割ることにより、いずれかの非直角のアークタンジェントを計算できます。しかし、あなたが説明した情報では、分子または分母のいずれかが不足していることになります。
与えられた長さのhypotenuseを持つ直角三角形は無数にあります。