【JAVA,EXCEL】台形、角度計算、ラジアン、60進数変換

はじめに

台形の上辺と下辺と高さから、角度を算出する事があったのでメモしておきます。
exelとjavaの2種類で算出してみました。

概要

上図の左側のようにA,B,Cの長さがわかっている時に、Zの角度を算出します。
これを右側のような考え方に変換し、高さCと下辺dの直角三角形の頂点の角度を求めます。

EXCELで算出

1:関数ATAN2を使用します。
Cは直角三角形の高さ、dは直角三角形の底辺の長さです。
ATAN2(C,d)
以上でラジアンが求まります。
結果値例:0.099669(A=2000,B=2010,C=100)

2:次にラジアンを度に変換します。
DEGREES(1で求めた値)
結果値例:5.710593

3:最後に60進数に変換します。
TEXT(2で求めた値/24,”h°mm′ss″”)
結果値例:5°42′38″” (5度42分38秒)

JAVAで算出

1:MATHクラスのATAN2関数を使用します。
Cは直角三角形の高さ、dは直角三角形の底辺の長さです。
Math.atan2(d,C)
以上でラジアンが求まります。
結果値例:0.099669(A=2000,B=2010,C=100)

2:次にラジアンを度に変換します。
Math.degrees(1で求めた値)
結果値例:5.710593

3:最後に60進数に変換します。
excelと違い面倒です。
整数部と小数部に分けて、更に小数部を分と秒に分けてそれぞれ計算します。

・時(整数部)
Math.floor(2で求めた値)
結果値例:5°(5度)

・分
var F_syosu1 = parseFloat(“0.”+(String(2で求めた値)).split(“.”)[1]);
var F_fun60 = F_syosu1 * 60;
var F_fun = Math.floor(F_fun60);
結果値例:F_fun=42′(42分)

・秒
var F_syosu2 = parseFloat(“0.”+(String(F_fun60)).split(“.”)[1]);
var F_byo60 = F_syosu2 * 60;
var F_byo = Math.floor(F_byo60);
結果値例:F_byo=38″” (38秒)

まとめ

あまり使用する事は無いと思いますが、ご参考に・・・

コメント