amr3b.cpp

Go to the documentation of this file.
00001 /*
00002 * PFS3bind.c
00003 * Binding [C] for PFS3tree.c [C++] implementation
00004 */
00005 
00006 #include <stdio.h> 
00007 #include <stdlib.h>
00008 #include <string.h>
00009 #include <math.h>
00010 
00011 #include "amr3t.h"
00012 #include "amr3b.h"
00013 
00014 void *PFSRtreeCreate(void)
00015 {
00016  PFS3Rtree *r3;
00017  r3=new PFS3Rtree(4,10);
00018  r3->Create();
00019  return (void*)r3;
00020 }
00021 
00022 void PFSRtreeDestroy(void *r)
00023 {
00024  PFS3Rtree *r3=(PFS3Rtree*)r;
00025  r3->Delete();
00026 }
00027 
00028 void PFSRtreeInsert(void *r,
00029                     void *info,
00030                     double xmin,double xmax,
00031                     double ymin,double ymax,
00032                     double zmin,double zmax)
00033 {
00034  PFS3Rtree *r3=(PFS3Rtree*)r;
00035  PFS3BoxId bid;
00036  bid.P=info;
00037  bid.Xmin=xmin, bid.Xmax=xmax,
00038  bid.Ymin=ymin, bid.Ymax=ymax,
00039  bid.Zmin=zmin, bid.Zmax=zmax;
00040  r3->Insert(&bid);
00041 }
00042 
00043 void PFSRtreeDelete(void *r,
00044                     void *info,
00045                     double xmin,double xmax,
00046                     double ymin,double ymax,
00047                     double zmin,double zmax)
00048 {
00049  PFS3Rtree *r3=(PFS3Rtree*)r;
00050  PFS3BoxId bid;
00051  bid.P=info;
00052  bid.Xmin=xmin, bid.Xmax=xmax,
00053  bid.Ymin=ymin, bid.Ymax=ymax,
00054  bid.Zmin=zmin, bid.Zmax=zmax;
00055  r3->Remove(&bid);
00056 }
00057 
00058 void PFSRtreeInitTraverse(void *r)
00059 {
00060  PFS3Rtree *r3=(PFS3Rtree*)r;
00061  r3->SearchAll();
00062 }
00063 
00064 void *PFSRtreeTraverse(void *r,
00065                        double *xmin,double *xmax,
00066                        double *ymin,double *ymax,
00067                        double *zmin,double *zmax)
00068 {
00069  PFS3Rtree *r3=(PFS3Rtree*)r;
00070  PFS3BoxId bid;
00071  if (!r3->ResultAll(&bid))
00072  {
00073   *xmin=bid.Xmin,
00074   *xmax=bid.Xmax,
00075   *ymin=bid.Ymin,
00076   *ymax=bid.Ymax,
00077   *zmin=bid.Zmin,
00078   *zmax=bid.Zmax;
00079   return bid.P;
00080  }
00081  return NULL;
00082 }
00083 
00084 void PFSRtreeInitSearchBox(void *r,
00085                            double xmin,double xmax,
00086                            double ymin,double ymax,
00087                            double zmin,double zmax)
00088 {
00089  PFS3Rtree *r3=(PFS3Rtree*)r;
00090  PFS3Box b;
00091  b.Xmin=xmin, b.Ymin=ymin, b.Zmin=zmin,
00092  b.Xmax=xmax, b.Ymax=ymax, b.Zmax=zmax;
00093  r3->Search(&b);
00094 }
00095 
00096 void *PFSRtreeSearchBox(void *r,
00097                         double *xmin,double *xmax,
00098                         double *ymin,double *ymax,
00099                         double *zmin,double *zmax)
00100 {
00101  PFS3Rtree *r3=(PFS3Rtree*)r;
00102  PFS3BoxId bid;
00103  if(!r3->Result(&bid))
00104  {
00105   *xmin=bid.Xmin,
00106   *xmax=bid.Xmax,
00107   *ymin=bid.Ymin,
00108   *ymax=bid.Ymax,
00109   *zmin=bid.Zmin,
00110   *zmax=bid.Zmax;
00111   return bid.P;
00112  }
00113  return NULL;
00114 }

Generated on Tue Oct 23 11:23:28 2007 for Relax by  doxygen 1.5.3