//The function utilizes a switch statement to determine the type of conversion to apply. Depending on the value of query, the function calculates the equivalent value in a different unit or returns the input unchanged. If an invalid query is provided, the function returns NAN to indicate an error. The EMSCRIPTEN_KEEPALIVE directive ensures the function remains accessible in a WebAssembly context when compiled using Emscripten.
// Degrees conversions
EMSCRIPTEN_KEEPALIVE
doubleConvertFromDegrees(doublevalue,intquery){
switch(query){
case1:returnvalue;// Degrees to Degrees
case2:returnvalue*(PI/180.0);// Degrees to Radians
case3:returnvalue*3600;// Degrees to Arcsecond
case4:returnvalue*1.111111;// Degrees to Gradian
case5:returnvalue*17.777777778;// Degrees to Milliradian
case6:returnvalue*60;// Degrees to Minute of arc
default:returnNAN;
}
}
// Radians conversions
EMSCRIPTEN_KEEPALIVE
doubleConvertFromRadians(doublevalue,intquery){
switch(query){
case1:returnvalue*(180.0/PI);// Radians to Degrees
case2:returnvalue;// Radians to Radians
case3:returnvalue*206264.806;// Radians to Arcsecond
case4:returnvalue*63.661977236;// Radians to Gradian
case5:returnvalue*1000;// Radians to Milliradian
case6:returnvalue*3437.746771;// Radians to Minute of arc
default:returnNAN;
}
}
// Arcsecond conversions
EMSCRIPTEN_KEEPALIVE
doubleConvertFromArcsecond(doublevalue,intquery){
switch(query){
case1:returnvalue*(1.0/3600.0);// Arcsecond to Degrees
case2:returnvalue*(PI/(180.0*3600.0));// Arcsecond to Radians
case3:returnvalue;// Arcsecond to Arcsecond
case4:returnvalue*0.0003086;// Arcsecond to Gradian
case5:returnvalue*0.004848;// Arcsecond to Milliradian
case6:returnvalue*(1.0/60.0);// Arcsecond to Minute of arc
default:returnNAN;
}
}
// Gradian conversions
EMSCRIPTEN_KEEPALIVE
doubleConvertFromGradian(doublevalue,intquery){
switch(query){
case1:returnvalue*0.9;// Gradian to Degrees
case2:returnvalue*(PI/200.0);// Gradian to Radians
case3:returnvalue*3240;// Gradian to Arcsecond
case4:returnvalue;// Gradian to Gradian
case5:returnvalue*15.707963268;// Gradian to Milliradian
//The function utilizes a switch statement to determine the type of conversion to apply. Depending on the value of query, the function calculates the equivalent value in a different unit or returns the input unchanged. If an invalid query is provided, the function returns NAN to indicate an error. The EMSCRIPTEN_KEEPALIVE directive ensures the function remains accessible in a WebAssembly context when compiled using Emscripten.