Index: trunk/Ohana/src/libdvo/src/coordops.c
===================================================================
--- trunk/Ohana/src/libdvo/src/coordops.c	(revision 14287)
+++ trunk/Ohana/src/libdvo/src/coordops.c	(revision 14288)
@@ -72,4 +72,5 @@
       case PROJ_TAN:
       case PROJ_DIS:
+	// R = cot (theta) = cos(theta) / sin(theta)
 	if (R == 0) {
 	  stht = 1.0;
@@ -82,10 +83,17 @@
 	break;
       case PROJ_STG:
+	// R = (180/pi) [2 cos (theta)  / 1 + sin (theta)]
 	stht = (4 - RAD_DEG*R) / (4 + RAD_DEG*R);
 	ctht = sqrt (1 - stht*stht);
 	break;
       case PROJ_SIN:
+	// R = (180/pi) cos (theta)
 	ctht = RAD_DEG * R;
 	stht = sqrt (1 - ctht*ctht);
+	break;
+      case PROJ_ARC:
+	// R = 90 - theta (degrees)
+	ctht = sin (RAD_DEG * R);
+	stht = cos (RAD_DEG * R);
 	break;
       case PROJ_ZEA:
@@ -161,5 +169,5 @@
   double phi, theta;
   double Lo, Mo;
-  double sphi, cphi, stht;
+  double sphi, cphi, stht, ctht;
   double salp, calp, sdel, cdel, sdp, cdp;
   double P, A, Rc;
@@ -201,17 +209,37 @@
     cphi = cdel*sdp*calp - sdel*cdp;    /* = cos(theta)*cos(phi) */
 
+    // L = +R sin(phi)
+    // M = -R cos(phi)
+
     switch (proj) {
       case PROJ_TAN:
       case PROJ_DIS:
+	// R = cot (theta) = cos(theta) / sin(theta)
 	Rc = hypot(sphi, cphi);
 	*L = (stht == 0) ? 180.0 * sphi / Rc :  +DEG_RAD * sphi / stht;
 	*M = (stht == 0) ? 180.0 * cphi / Rc :  -DEG_RAD * cphi / stht;
 	return (stht > 0);
+      case PROJ_STG:
+	// R = 2 cos(theta) / [1 + sin(theta)]
+	Rc = DEG_RAD * 2 / (1 + stht);
+	*L = +Rc * sphi;
+	*M = -Rc * cphi;
+	return (stht > 0);
       case PROJ_SIN:
+	// R = cos(theta)
 	*L = +DEG_RAD * sphi;
 	*M = -DEG_RAD * cphi;
 	return (stht > 0);
+      case PROJ_ARC:
+	// R = 90 - theta
+	ctht = hypot(sphi, cphi);
+	theta = atan2 (stht, ctht);
+	Rc = 90 - DEG_RAD * theta;
+	*L = (ctht == 0.0) ? 0.0 : +Rc * sphi / ctht ;
+	*M = (ctht == 0.0) ? 0.0 : -Rc * cphi / ctht ;
+	return (TRUE);
       case PROJ_ZEA:
       case PROJ_ZPL:
+	// R = 90 - theta
 	Rc = DEG_RAD * M_SQRT2 / sqrt (1 + stht);
 	*L =  Rc * sphi;
