はじめに
台形の上辺と下辺と高さから、角度を算出する事があったのでメモしておきます。
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秒)
まとめ
あまり使用する事は無いと思いますが、ご参考に・・・
コメント