00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef OST_GFX_PRIM_HH
00020 #define OST_GFX_PRIM_HH
00021
00022
00023
00024
00025
00026 #include <vector>
00027
00028 #include <ost/geom/geom.hh>
00029
00030 #include "color.hh"
00031
00032 namespace ost { namespace gfx {
00033
00034 struct SpherePrim {
00035 SpherePrim():
00036 position(),radius(1.0),color()
00037 {}
00038 SpherePrim(const geom::Vec3& pos, float rad, const Color& col):
00039 position(pos), radius(rad), color(col)
00040 {}
00041
00042 geom::Vec3 position;
00043 float radius;
00044 Color color;
00045 };
00046
00047 typedef std::vector<SpherePrim> SpherePrimList;
00048
00049 struct CylinderPrim {
00050 CylinderPrim():
00051 start(), end(),
00052 radius1(1.0), radius2(1.0),
00053 color1(), color2(),
00054 length(1.0), rotmat(), rotmat_t()
00055 {
00056 calc_rotmat();
00057 }
00058
00059 CylinderPrim(const geom::Vec3& st, const geom::Vec3& en, float rad, const Color& col):
00060 start(st), end(en),
00061 radius1(rad), radius2(rad),
00062 color1(col), color2(col),
00063 length(geom::Length(end-start)), rotmat(), rotmat_t()
00064 {
00065 calc_rotmat();
00066 }
00067
00068 CylinderPrim(const geom::Vec3& st, const geom::Vec3& en, float rad, const Color& col1, const Color& col2):
00069 start(st), end(en),
00070 radius1(rad), radius2(rad),
00071 color1(col1), color2(col2),
00072 length(geom::Length(end-start)), rotmat(), rotmat_t()
00073 {
00074 calc_rotmat();
00075 }
00076
00077 CylinderPrim(const geom::Vec3& st, const geom::Vec3& en, float radius_1, float radius_2, const Color& col):
00078 start(st), end(en),
00079 radius1(radius_1), radius2(radius_2),
00080 color1(col), color2(col),
00081 length(geom::Length(end-start)), rotmat(), rotmat_t()
00082 {
00083 calc_rotmat();
00084 }
00085
00086 CylinderPrim(const geom::Vec3& st, const geom::Vec3& en, float radius_1, float radius_2, const Color& col1, const Color& col2):
00087 start(st), end(en),
00088 radius1(radius_1), radius2(radius_2),
00089 color1(col1), color2(col2),
00090 length(geom::Length(end-start)), rotmat(), rotmat_t()
00091 {
00092 calc_rotmat();
00093 }
00094
00095 void calc_rotmat();
00096
00097 geom::Vec3 start,end;
00098 float radius1,radius2;
00099 Color color1, color2;
00100 float length;
00101 geom::Mat3 rotmat;
00102 geom::Mat3 rotmat_t;
00103 };
00104
00105 typedef std::vector<CylinderPrim> CylinderPrimList;
00106
00107 struct TextPrim {
00108 TextPrim(): str(""), position(),color(),points(1.0) {}
00109 TextPrim(const String& s, const geom::Vec3& p, const Color& c, float ps):
00110 str(s), position(p), color(c), points(ps) {}
00111 String str;
00112 geom::Vec3 position;
00113 Color color;
00114 float points;
00115 };
00116
00117 typedef std::vector<TextPrim> TextPrimList;
00118
00119
00120 }}
00121
00122 #endif