** Web版 土木測量計算プログラム **     

ホームページ上で動く土木測量計算プログラム用関数

下記は、javascriptsファイル 「 java_doboku.js 」のソースリストです。
[ ページのソースを表示 ]をするとjavascriptsで作成した関数がコピーできます。
//------------------------------------------------
//     度をラジアンに変換する関数
//------------------------------------------------
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;
}
}