javascript to translate kmh --> bft

Hi,

I use this wind-variable to display the windspeed in kmh.


ajaxwindmaxgust

Can someone help me with some javascript who make the translation from kmh to bft?

i use the saratoga ajaxWDwx.js file.

Saw this code embeded in a page… Wind Speed Converter


function signifdig(num)
// Round string numeric content to 5 significant digits
{var ex=0;
if(num==0) {strin="0"; return strin;}
if(num<0.) {strin="-"; num = Math.abs(num);}
else strin="";
wsto = num;
if(num>=10){ 
while (num>=10) {num/=10; ex+=1;}
if (ex<5) {erg = Math.round(wsto*Math.pow(10,4-ex)) / Math.pow(10,4-ex); strin+=eval(erg);}
else {strin+=eval(Math.round(num*10000)/10000); strin+="e+"; strin+=eval(ex);}}
else {if (num>=0.999995) strin+=eval(Math.round(num*10000)/10000);
else {if (num>=0.0999995) {strin+=""; strin+=eval(Math.round(num*100000)/100000);}
else {while(num<1) {num*=10; ex+=1;}
strin+=eval(Math.round(num*10000)/10000); strin+="e-"; strin+=eval(ex); }}}
return strin;}

function calc(form,val,index)
{
if(index==0) v=val;               // m s-1
if(index==1) v=val/3.6;           // km h-1
if(index==2) v=val*(0.51+4/900);  // knots
if(index==3) v=val*0.44704;       // mi h-1
if(index==4) v=val*0.3048;        // ft s-1
if(index==5) v=val/60.;           // m min-1
if(index==6) v=val*0.3048/60.;    // ft min-1

form.ms.value=signifdig(v);                 // m s-1
var kmh=v*3.6;
form.kmh.value=signifdig(v*3.6);            // km h-1
var knot=v/(0.51+4/900);
form.knot.value=signifdig(knot);            // knot
form.mih.value=signifdig(v/0.44704);        // mi h-1
form.fts.value=signifdig(v/0.3048);         // ft s-1
form.mmi.value=signifdig(v*60.);            // m min-1
form.ftm.value=signifdig(v/0.3048*60.);     // ft min-1
beaufort(form,knot);
return;

}

function beaufort(form,knot)
{
if(knot<=1) form.bea.value=signifdig(0);
if(knot>1 && knot<3.5) form.bea.value=signifdig(1);
if(knot>=3.5 && knot<6.5) form.bea.value=signifdig(2);
if(knot>=6.5 && knot<10.5) form.bea.value=signifdig(3);
if(knot>=10.5 && knot<16.5) form.bea.value=signifdig(4);
if(knot>=16.5 && knot<21.5) form.bea.value=signifdig(5);
if(knot>=21.5 && knot<27.5) form.bea.value=signifdig(6);
if(knot>=27.5 && knot<33.5) form.bea.value=signifdig(7);
if(knot>=33.5 && knot<40.5) form.bea.value=signifdig(8);
if(knot>=40.5 && knot<47.5) form.bea.value=signifdig(9);
if(knot>=47.5 && knot<55.5) form.bea.value=signifdig(10);
if(knot>=55.5 && knot<63.5) form.bea.value=signifdig(11);
if(knot>=63.5 && knot<74.5) form.bea.value=signifdig(12);
if(knot>=74.5 && knot<80.5) form.bea.value=signifdig(13);
if(knot>=80.5 && knot<89.5) form.bea.value=signifdig(14);
if(knot>=89.5) form.bea.value=signifdig(15);
return;
}

Here’s some snippets from the Cumulus AJAX function that can do the conversion and beaufort numbers:



var rWindUOM = 'kmh';  // establish source wind Units of Measure

var theWind = 0;    // dummy.. use your variable containing the wind info here (numeric data only..no units)

var theBeaufort = ajax_get_beaufort_number(  theWind ); 





function cWindToKTS ( rawwind ) {
	// convert input wind to knots if need be
	if(rawwind == '---') {rawwind = 0.0;}
	var cpat=/kts|knots/i;
	if(cpat.test(rWindUOM)) { // wind already in knots
		return rawwind * 1.0;
	}
	cpat=/mph/i;
	if(cpat.test(rWindUOM)) { // wind in mph -> knots
		return rawwind * 0.868976242;
	}
	cpat=/kmh|km\/h/i;
	if(cpat.test(rWindUOM)) { // wind in kmh -> knots
		return rawwind * 0.539956803;
	}
	cpat=/mps|m\/s/i;
	if(cpat.test(rWindUOM)) { // wind in mps -> knots
		return rawwind * 1.9438444924406;
	}
	return -1.0;  // shouldn't be here :)

}

function ajax_get_beaufort_number ( inwind ) { 
// return a number for the beaufort scale based on wind in knots (native WD format)
  var wind = cWindToKTS(inwind);
  
  if (wind < 1 ) {return("0"); }
  if (wind < 4 ) {return("1"); }
  if (wind < 7 ) {return("2"); }
  if (wind < 11 ) {return("3"); }
  if (wind < 17 ) {return("4"); }
  if (wind < 22 ) {return("5"); }
  if (wind < 28 ) {return("6"); }
  if (wind < 34 ) {return("7"); }
  if (wind < 41 ) {return("8"); }
  if (wind < 48 ) {return("9"); }
  if (wind < 56 ) {return("10"); }
  if (wind < 64 ) {return("11"); }
  if (wind >= 64 ) {return("12"); }
  return("0");
}

hope this helps…

Best regards,
Ken

Hi Ken,

I put the first function in the ajaxWDwx.js
The second function was already available.

But how i use this 2 functions?

I have this variabele AJAXWINDMAXGUST in kmh.
And i want a new variabele AJAXWINDMAXGUSTBFT in bft


function cWindToKTS ( rawwind ) {
// convert input wind to knots if need be
if(rawwind == ‘—’) {rawwind = 0.0;}
var cpat=/kts|knots/i;
if(cpat.test(rWindUOM)) { // wind already in knots
return rawwind * 1.0;
}
cpat=/mph/i;
if(cpat.test(rWindUOM)) { // wind in mph → knots
return rawwind * 0.868976242;
}
cpat=/kmh|km/h/i;
if(cpat.test(rWindUOM)) { // wind in kmh → knots
return rawwind * 0.539956803;
}
cpat=/mps|m/s/i;
if(cpat.test(rWindUOM)) { // wind in mps → knots
return rawwind * 1.9438444924406;
}
return -1.0; // shouldn’t be here :slight_smile:

}

function ajax_get_beaufort_number ( wind ) {
// return a number for the beaufort scale based on wind knots (native WD format)
if (wind < 1 ) {return(“0”); }
if (wind < 4 ) {return(“1”); }
if (wind < 7 ) {return(“2”); }
if (wind < 11 ) {return(“3”); }
if (wind < 17 ) {return(“4”); }
if (wind < 22 ) {return(“5”); }
if (wind < 28 ) {return(“6”); }
if (wind < 34 ) {return(“7”); }
if (wind < 41 ) {return(“8”); }
if (wind < 48 ) {return(“9”); }
if (wind < 56 ) {return(“10”); }
if (wind < 64 ) {return(“11”); }
if (wind >= 64 ) {return(“12”); }
return(“0”);
}