Index: trunk/psLib/src/astro/psCoord.c
===================================================================
--- trunk/psLib/src/astro/psCoord.c	(revision 3000)
+++ trunk/psLib/src/astro/psCoord.c	(revision 3095)
@@ -10,6 +10,6 @@
 *  @author GLG, MHPCC
 *
-*  @version $Revision: 1.46 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2005-01-14 23:27:55 $
+*  @version $Revision: 1.47 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2005-01-26 20:24:16 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -59,4 +59,35 @@
 /* FUNCTION IMPLEMENTATION - PUBLIC                                          */
 /*****************************************************************************/
+static void planeFree(psPlane *p)
+{
+    psFree(p);
+}
+
+// XXX: Must test psPlaneAlloc() and planeFree().
+// XXX: Must rewrite code and tests to use these functions.
+psPlane* psPlaneAlloc(void)
+{
+    psPlane *p = psAlloc(sizeof(psPlane));
+
+    p_psMemSetDeallocator(p, (psFreeFcn) planeFree);
+    return(p);
+}
+
+
+static void sphereFree(psSphere *s)
+{
+    psFree(s);
+}
+
+// XXX: Must test psSphereAlloc() and sphereFree().
+// XXX: Must rewrite code and tests to use these functions.
+psSphere* psSphereAlloc(void)
+{
+    psSphere *s = psAlloc(sizeof(psSphere));
+
+    p_psMemSetDeallocator(s, (psFreeFcn) sphereFree);
+    return(s);
+}
+
 static void planeTransformFree(psPlaneTransform *pt)
 {
@@ -159,4 +190,47 @@
 }
 
+// XXX: Must code this.
+psPlaneTransform *psPlaneTransformInvert(
+    psPlaneTransform *out,
+    const psPlaneTransform *in,
+    psRegion *region,
+    int nSamples)
+{
+    PS_PTR_CHECK_NULL(in, NULL);
+    PS_PTR_CHECK_NULL(region, NULL);
+
+    return(NULL);
+}
+
+
+// XXX: Must code this.
+psPlaneTransform *psPlaneTransformCombine(
+    psPlaneTransform *out,
+    const psPlaneTransform *trans1,
+    const psPlaneTransform *trans2)
+{
+    PS_PTR_CHECK_NULL(trans1, NULL);
+    PS_PTR_CHECK_NULL(trans2, NULL);
+
+    return(NULL);
+}
+
+
+// XXX: Must code this.
+bool psPlaneTranformFit(
+    psPlaneTransform *trans,
+    const psArray *source,
+    const psArray *dest,
+    int nRejIter,
+    float sigmaClip)
+{
+    PS_PTR_CHECK_NULL(trans, NULL);
+    PS_PTR_CHECK_NULL(source, NULL);
+    PS_PTR_CHECK_NULL(dest, NULL);
+
+    return(NULL);
+}
+
+
 /******************************************************************************
 alpha is LONGITUDE
@@ -299,4 +373,30 @@
 }
 
+void projectionFree(psProjection *p)
+{
+    psFree(p);
+}
+
+// XXX: Must test psProjectionAlloc() and projectionFree().
+// XXX: Must rewrite code and tests to use these functions.
+psProjection* psProjectionAlloc(
+    psF64 R,
+    psF64 D,
+    psF64 Xs,
+    psF64 Ys,
+    psProjectionType type)
+{
+    psProjection *p = psAlloc(sizeof(psProjection));
+    p->D = D;
+    p->R = R;
+    p->Xs = Xs;
+    p->Ys = Ys;
+    p->type = type;
+
+    p_psMemSetDeallocator(p, (psFreeFcn) planeFree);
+    return(p);
+}
+
+
 /******************************************************************************
 XXX: Waiting for the definition of the PS_PROJ_PAR projection.
@@ -323,9 +423,9 @@
                 psF32 cosThetaSinPhi;
          
-                sinTheta = (sin(coord->d) * sin(projection->D)) + 
-                           (cos(coord->d) * cos(projection->D) * (cos(coord->r - projection->R)));
-                cosThetaCosPhi = (sin(coord->d) * cos(projection->D)) - 
-                                 (cos(coord->d) * sin(projection->D) * (cos(coord->r - projection->R)));
-                cosThetaSinPhi = - cos(coord->d) * sin(coord->r - projection->R);
+        sinTheta = (sin(coord->d) * sin(projection->D)) + 
+             (cos(coord->d) * cos(projection->D) * (cos(coord->r - projection->R)));
+        cosThetaCosPhi = (sin(coord->d) * cos(projection->D)) - 
+                   (cos(coord->d) * sin(projection->D) * (cos(coord->r - projection->R)));
+        cosThetaSinPhi = - cos(coord->d) * sin(coord->r - projection->R);
          
                 tmp->x =  -cosThetaSinPhi / sinTheta;
