00001 00010 #ifndef PTCLOUD_H 00011 #define PTCLOUD_H 00012 00013 00014 #include <assert.h> 00015 #include "Color.H" 00016 00017 // Gluebase includes 00018 #define OUTSIDE_GLUE_CORE 00019 #include <mlib/points.H> 00020 #include <std/list.H> 00021 00022 namespace InSpace { 00023 00024 class PtCloud 00025 { 00026 public: 00027 00028 PtCloud() {}; 00029 virtual ~PtCloud() {}; 00030 00031 virtual int num() { return _points.num(); } 00032 00033 virtual Wpt point(int n) { 00034 assert(n < _points.num()); 00035 return _points[n]; 00036 } 00037 00038 virtual Wvec norm(int n) { 00039 assert (n < _norms.num()); 00040 return _norms[n]; 00041 } 00042 00043 virtual Color color(int n) { 00044 assert (n < _colors.num()); 00045 return _colors[n]; 00046 } 00047 00048 virtual void addPt(Wpt p, Wvec n, Color c) { 00049 _points += p; 00050 _norms += n; 00051 _colors += c; 00052 } 00053 00054 protected: 00055 00056 Wpt_list _points; 00057 ARRAY<Wvec> _norms; 00058 ARRAY<Color> _colors; 00059 00060 }; 00061 00062 } 00063 #endif 00064