Index: trunk/psModules/src/objects/pmGrowthCurve.c
===================================================================
--- trunk/psModules/src/objects/pmGrowthCurve.c	(revision 15165)
+++ trunk/psModules/src/objects/pmGrowthCurve.c	(revision 20232)
@@ -5,6 +5,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.13 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-10-03 00:42:40 $
+ *  @version $Revision: 1.14 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2008-10-17 22:58:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -46,4 +46,5 @@
 }
 
+# define NPTS 25
 pmGrowthCurve *pmGrowthCurveAlloc (psF32 minRadius, psF32 maxRadius, psF32 refRadius)
 {
@@ -52,6 +53,28 @@
     psMemSetDeallocator(growth, (psFreeFunc) pmGrowthCurveFree);
 
-    // fractional pixel radii are not well defined; use integer steps
-    growth->radius = psVectorCreate (NULL, minRadius, maxRadius, 1.0, PS_TYPE_F32);
+    // set the scaling factor
+    float dR = log10(maxRadius / minRadius) / (float) NPTS;
+    float fR = pow (10.0, dR);
+
+    // Fractional pixel radii are not well defined; use integer pixel radii.  Use 1 pixel steps
+    // until the scaling factor steps in intervals larger than 1 pixel
+    float Rlin = 1.0 / (fR - 1.0);
+
+    growth->radius = psVectorAllocEmpty (NPTS, PS_DATA_F32);
+    
+    // there will be NPTS radii + a few extras 
+    float radius = minRadius;
+    while (radius < Rlin) {
+	// fprintf (stderr, "r: %f\n", radius);
+	psVectorAppend (growth->radius, radius);
+	radius += 1.0;
+    }    
+    while (radius < maxRadius) {
+	// fprintf (stderr, "r: %f\n", radius);
+	psVectorAppend (growth->radius, radius);
+	radius *= fR;
+	radius = (int) (radius + 0.5);
+    }    
+    psVectorAppend (growth->radius, radius);
     growth->apMag  = psVectorAlloc (growth->radius->n, PS_TYPE_F32);
 
