短縮版:
基本的に、 ( )Point C
の終点を使用して未知数の X 値と Y 値を計算しようとしています。Line AB
Point B
使用してみatan2( B.y, B.x)
ましたが、 に対応する角度が得られ、X-Axis
座標が間違っています。Line BC
によって形成される角度と、その上にある仮想の水平軸Point B
( )を取得する必要があると考えましたAngle P
。その角度を取得する方法はありますか?その角度を取得しても、やりたいことを実行できないとしたら、どうしますか?
長いバージョン:
C++ を使用して数学を実行しようとしていますが、この特定の問題に行き詰まりました。
2 つのベクトルVector A
とVector B
( と で示されPoint A
、Point B
それらは を形成しますline AB
) があります。ここで、 ( で示される)から離れた単位であるVector C
( Point C
)を取得したいと思います。L
Vector B
Line BC
私は周りを検索し、いくつかの本を読み、必要なポイントを得るためにこの公式を得ました.
/* Let:
* L = length from B to C
* ( B.x, B.y ) = start point
* ( C.x, C.y ) = end point
* theta = angle respective to X-Axis ( using atan2( B.y, B.x ) )
*/
// To get C.x use formula cos( theta ) = ( C.x - B.x ) / L then derive
C.x = ( L * cos( theta ) ) + B.x;
// To get C.y use formula sin( theta ) = ( C.y - B.y ) / L then derive
C.y = ( L * sin( theta ) ) + B.y;
ただし、結果は に対応するPoint C
ため、上記のようにはなりません。もう少し読んだ後、 (淡い赤の線) と仮想の水平軸 (青緑の線)の間の角度 (紫で示されている) を取得する必要があることがわかりました。C
X-Axis
Angle P
Line BC
Point B
もう一つの例:
この場合、上記の式を使用するC
と、間違った場所に配置されます (上記( X , 5 )
) 。
getAngle P
で私が望むことができるかどうかはわかりませんが、もっと適切な答えを知っている場合は、そうしてください。