00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018
00019
00020 00021 00022 00023 00024 00025 00026 00027 00028
00029 #ifndef __SURFACE_H
00030 #define __SURFACE_H
00031
00032 #include "rvtypes.h"
00033 #include "lookup.h"
00034
00035
00037
00040 class Surface
00041 {
00042 public:
00043 Surface(rvulong stype, rvulong type,
00044 Vector *v0, Vector *v1, Vector *v2, Vector *v3=NULL);
00045
00046 void createPolyhedron(rvulong);
00047 Vector planarNormal(void);
00048 void createPlane(RV_Plane *, Vector &normal, Vector &pos);
00049
00050 void write(FILE *);
00051
00052 void expandGrid(LookupGrid*);
00053
00055 void enterIntoGrid(LookupGrid*, rvulong myidx);
00056
00057 bool isInGrid(LookupGrid*, int, int);
00058
00059 private:
00060 RV_Polyhedron ph;
00061 Vector vecs[4];
00062 Vector orient_vecs[4];
00063 bool orient_is_waste[4];
00064 rvfloat orient_distance[4];
00065 int nvecs;
00066 };
00067
00068 #endif