00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef QUICKSURF_H
00021 #define QUICKSURF_H
00022
00023 #include "AtomSel.h"
00024 #include "ResizeArray.h"
00025 #include "Isosurface.h"
00026 #include "WKFUtils.h"
00027 #include "VolumetricData.h"
00028 #include "VMDDisplayList.h"
00029
00030 class CUDAQuickSurf;
00031
00032 class QuickSurf {
00033 private:
00034 float *volmap;
00035 float *voltexmap;
00036 IsoSurface s;
00037 float isovalue;
00038 float solidcolor[3];
00039 int numvoxels[3];
00040 float origin[3];
00041 float xaxis[3];
00042 float yaxis[3];
00043 float zaxis[3];
00044
00045 CUDAQuickSurf *cudaqs;
00046
00047 wkf_timerhandle timer;
00048 double pretime;
00049 double voltime;
00050 double gradtime;
00051 double mctime;
00052 double mcverttime;
00053 double reptime;
00054
00055 public:
00056 QuickSurf(void);
00057 ~QuickSurf(void);
00058
00059 int calc_surf(AtomSel * atomSel, DrawMolecule *mymol,
00060 const float *atompos, const float *atomradii,
00061 int quality, float radscale, float gridspacing, float isovalue,
00062 const int *colidx, const float *cmap, VMDDisplayList *cmdList);
00063
00064 private:
00065 int get_trimesh(int &numverts, float *&v3fv, float *&n3fv, float *&c3fv,
00066 int &numfacets, int *&fiv);
00067
00068 int draw_trimesh(VMDDisplayList *cmdList);
00069
00070 };
00071
00072 #endif
00073