//------------------------------------------------
// 度をラジアンに変換する関数
//------------------------------------------------
function Radian(DD) {
return Math.PI / 180 * DD;
}
//------------------------------------------------
// 角度を -360 <= 角度 <=360 に変換する関数
//------------------------------------------------
function ma360(DD) {
var Flag = 0;
if ( DD < 0 ){ Flag = 1 }
DD = Math.abs(DD);
if ( DD >; 360 ) { DD = DD - parseInt(DD / 360) * 360 }
if ( Flag == 1 ) { DD = -DD }
return DD;
}
//-------------------------------------------------
// 度.分秒 (ddd.mmss ) ==>> 度-分-秒 に変換
//-------------------------------------------------
function DMS_text(dms) {
var Flag = "";
if ( dms < 0 ) { Flag = "-" }
/* 0.0000001 を加算して整数の時に実数にする */
/* これで 分, 秒が "00" として取得できる。 */
var ddms = Math.abs(dms) + 0.0000001;
var IN_data=String(ddms);
var bn = new Array();
bn=IN_data.split(".");
//
var hun=bn[1].substr(0,2);
var byou=bn[1].substr(2,2);
//
var dmstext= Flag + String(bn[0]) + "-" + String(hun)
+ "-" + String(byou);
return dmstext;
}
//------------------------------------------------
// 60進の度 ==>> 度.分秒 (ddd.mmss)に変換
//------------------------------------------------
function DMS(dms) {
var Flag = 0;
if ( dms < 0 ) { Flag = 1 }
/* 0.0000001 を加算して整数の時に実数にする */
/* これで 分, 秒が "00" として取得できる。 */
dms = Math.abs(dms) + 0.000001;
var Fa = parseInt(dms + 0.00014, 10); // 整数化
var Fb = parseInt((dms - Fa + 0.00014)*60, 10);
var Fc = parseInt((dms - Fa - Fb/60 + 0.00014)*3600, 10);
//
var dms= Fa + Fb/100 + Fc/10000;
var dms=dms.toFixed(4);
if ( Flag == 1 ) { dms = -dms }
return dms;
}
//------------------------------------------------
// 度.分秒 (ddd.mmss) ==>> 60進の度に変換
//------------------------------------------------
function DEG(deg) {
var Flag = 0;
if ( deg < 0 ) { Flag = 1 }
/* 0.0000001 を加算して整数の時に実数にする */
/* これで 分, 秒が "00" として取得できる。 */
deg = Math.abs(deg) + 0.000001;
var IN_data=String(deg);
var bn = new Array();
bn=IN_data.split(".");
//
var hun=bn[1].substr(0,2);
var byou=bn[1].substr(2,2);
//
var I_hun= parseFloat(hun) / 60;
var I_byou = parseFloat(byou) / 3600;
/* parseFloat(bn[0]) 文字数値を実数に変換 */
var deg= parseFloat(bn[0])+I_hun+I_byou;
if ( Flag == 1 ) { deg = -deg }
return deg;
}
//------------------------------------------------
// 2点間距離の計算(差分 dx, dy) 1
//------------------------------------------------
function makyori1(dx,dy) {
var dxdy=Math.sqrt(dx*dx+dy*dy);
return dxdy.toFixed(4);
}
//------------------------------------------------
// 2点間距離の計算(座標値) 2
//------------------------------------------------
function makyori2(x1,y1,x2,y2) {
var ans=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
return ans.toFixed(4);
}
//------------------------------------------------
// 2点間方向角の計算(座標値) 2
//------------------------------------------------
function mahoukou2(x1,y1,x2,y2) {
var dx=x2 - x1;
var dy=y2 - y1;
var Fa=dx/Math.sqrt(dx*dx+dy*dy);
//alert("途中結果 dxdy = " +makyori1(dx,dy));
//alert("途中結果 Fa = " +Fa);
var Fb=(Math.atan(-Fa/Math.sqrt(-Fa*Fa+1))
+ 2*Math.atan(1))*180/Math.PI;
if ( dy < 0 ) { Fb = 360 - Fb }
return Fb;
}
//------------------------------------------------
// クロソイド X0, Y0
// MyR = A^2/L MyL = L
// XY = "X" ⇒ X座標計算
// XY = "Y" ⇒ Y座標計算
//------------------------------------------------
function Clothoid_XY(XY, MyR, MyL ) {
if ( XY == "X" ) {
var C_X = MyL * ( 1 - Math.pow(MyL,2)/(40 * Math.pow(MyR,2))
+ Math.pow(MyL,4)/(3456 * Math.pow(MyR,4))
- Math.pow(MyL,6)/(599040 * Math.pow(MyR,6)));
return C_X;
}
if ( XY = "Y" ) {
var C_Y = ( Math.pow(MyL,2)/(6 * MyR)) * (1 - Math.pow(MyL,2)
/(56 * Math.pow(MyR,2)) + Math.pow(MyL,4)/(7040
* Math.pow(MyR,4)) - Math.pow(MyL,6)
/(1612800 * Math.pow(MyR,6)));
return C_Y;
}
}
|