DOBON.NETプログラミング道掲示板

No35556 の記事


■35556 / )  2つのradの数値から1つの角度を求めるコードを改善できますか?(C++)
□投稿者/ キリシロ 一般人(1回)-(2023/12/01(Fri) 19:19:45)
  • アイコン環境/言語:[環境(エディション:Windows 11 Home バージョン:21H2)、使用言語(C++)、使用ソフト(Visual Studio 2022)] 
    分類:[.NET] 

    <目的>
    すでに、コードは完成したが角度を求める式を改善できるのではないかと思う。

    <このコードの目的>
    操作するためのキー入力(縦方向と横方向)を取得した際に、この二つの値(rad)を送ると操作対象の進行方向を0〜360度の間で求める関数を作成したい。

    <このコードの考え>
    rtanは、下が-1からはじまり、上の1までの縦軸の値と考える
    1

    rtan

    -1
    rcosは、左が-1からはじまり、右の1までの横軸の値と考える

    -1 → rcos → 1

    そうすることでこの二つの変数は十字の関係になり、角度が求められる。

    ................1
    ..............↑
    -1 → angle → 1
    ..............↑
    ..............-1

    ................90
    ................↑
    180 → angle → 0
    ................↑
    ..............270

    <送られてくる変数の範囲>
    -1.0 <= rtan,rcos <= 1.0

    <コード>
    double Function::AfTC(double rtan, double rcos)
    {
    double ctan = atan(rtan) * (double)180 / PI;
    double ccos = acos(rcos) * (double)180 / PI;
    double angle = (ccos == (double)0 ? (ctan < (double)0 ? (double)360 + ctan : ctan) : (ccos - ctan) * ((double)180 / ccos));
    return angle;
    }

    <入力例>
    1:rtan = 1.0, rcos = 0.0
    2:rtan = 0.0, rcos = -1.0
    3:rtan = -1.0, rcos = 0.0
    4:rtan = 0.0, rcos = 1.0
    5:rtan = 1.0, rcos = -1.0
    6:rtan = 1.0, rcos = 1.0
    7:rtan = -1.0, rcos = 1.0

    <出力例>
    1:angle = 90
    2:angle = 180
    3:angle = 270
    4:angle = 0
    5:angle = 135
    6:angle = 45
    7:angle = 315

    <追記>
    一通り注意事項を読んで投稿しましたが、足りていない部分がありましたらご指摘のほどよろしくお願いいたします。
違反を報告
返信 削除キー/


Mode/  Pass/


- Child Tree -