Index: /branches/eam_branches/ipp-20230313/Ohana/src/libdvo/include/libdvo_astro.h
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/libdvo/include/libdvo_astro.h	(revision 42584)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/libdvo/include/libdvo_astro.h	(revision 42585)
@@ -20,4 +20,5 @@
   PROJ_TNX, // zenithal
   PROJ_DIS, // zenithal (TAN + polyterms)
+  PROJ_CAR, // cartesian (Plat-Carre)
   PROJ_LIN, // cartesian
   PROJ_PLY, // cartesian (allow polyterms)
Index: /branches/eam_branches/ipp-20230313/Ohana/src/libdvo/src/coordops.c
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/libdvo/src/coordops.c	(revision 42584)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/libdvo/src/coordops.c	(revision 42585)
@@ -1072,4 +1072,5 @@
   if (!strncmp(&ctype[4], "-TNX", 4)) return PROJ_TNX;
   if (!strncmp(&ctype[4], "-DIS", 4)) return PROJ_DIS;
+  if (!strncmp(&ctype[4], "-CAR", 4)) return PROJ_CAR;
   if (!strncmp(&ctype[4], "-LIN", 4)) return PROJ_LIN;
   if (!strncmp(&ctype[0], "GENE", 4)) return PROJ_LIN; // note ctype[0]
@@ -1094,4 +1095,5 @@
     case PROJ_TNX: strcpy(&ctype[4], "-TNX"); return TRUE;
     case PROJ_DIS: strcpy(&ctype[4], "-DIS"); return TRUE;
+    case PROJ_CAR: strcpy(&ctype[4], "-CAR"); return TRUE;
     case PROJ_LIN: strcpy(&ctype[4], "-LIN"); return TRUE;
     case PROJ_PLY: strcpy(&ctype[4], "-PLY"); return TRUE;
@@ -1118,4 +1120,5 @@
     case PROJ_DIS:
       return PROJ_MODE_ZENITHAL;
+    case PROJ_CAR: 
     case PROJ_LIN: 
     case PROJ_PLY: 
Index: /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/region.c
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/region.c	(revision 42584)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/opihi/cmd.astro/region.c	(revision 42585)
@@ -160,6 +160,8 @@
     if (!strcasecmp (argv[CtypeArg], "PAR")) { strcpy (graphmode.coords.ctype, "DEC--PAR"); goto got_ctype; }
     if (!strcasecmp (argv[CtypeArg], "MOL")) { strcpy (graphmode.coords.ctype, "DEC--MOL"); goto got_ctype; }
+    if (!strcasecmp (argv[CtypeArg], "LIN")) { strcpy (graphmode.coords.ctype, "DEC--LIN"); goto got_ctype; }
+    if (!strcasecmp (argv[CtypeArg], "CAR")) { strcpy (graphmode.coords.ctype, "DEC--CAT"); goto got_ctype; }
     gprint (GP_ERR, "ERROR: invalid projection type %s\n", argv[CtypeArg]);
-    gprint (GP_ERR, "allowed values: TAN, SIN, ARC, STG, ZEA, AIT, GLS, PAR, MOL\n");
+    gprint (GP_ERR, "allowed values: TAN, SIN, ARC, STG, ZEA, AIT, GLS, PAR, MOL, LIN, CAR\n");
     return FALSE;
   }
Index: /branches/eam_branches/ipp-20230313/Ohana/src/opihi/test/cdensify.sh
===================================================================
--- /branches/eam_branches/ipp-20230313/Ohana/src/opihi/test/cdensify.sh	(revision 42585)
+++ /branches/eam_branches/ipp-20230313/Ohana/src/opihi/test/cdensify.sh	(revision 42585)
@@ -0,0 +1,51 @@
+
+macro init
+  $STEP = 10
+  create Rraw 0 360 $STEP
+  delete Rtst Dtst
+  for Draw -90 90 $STEP
+    set Draw = $Draw + zero(Rraw)
+    concat Rraw Rtst
+    concat Draw Dtst
+  end
+end
+
+macro go
+  resize 2200 900
+  region 180 0 100 AIT
+# region 180 0 100 LIN
+
+  cgrid -c red
+  box -ticks 0000 -labels 0000
+# section default -imtool none
+  section default -imtool +y
+  parity 0 1
+
+  cdensify Itst Rtst Dtst -psf circle -scale 3 -raw
+  
+  tv Itst 0 2
+end
+
+macro init.rnd
+  create seq 0 100000
+  set Rtst = 360*rnd(seq)
+  set Dtst = dasin(2*rnd(seq) - 1)
+end
+
+macro go.rnd
+  resize 2200 900
+# region 180 0 100 AIT
+  region 180 0 100 LIN
+
+  cgrid -c red
+  box -ticks 0000 -labels 0000
+# section default -imtool none
+  section default -imtool +y
+  parity 0 1
+
+  date
+  cdensify Itst Rtst Dtst -psf circle -scale 1.6 -raw
+  date
+  
+  tv Itst 0 2
+end
