00001 #ifndef TORUS_GENERATOR_
00002 #define TORUS_GENERATOR_
00003
00004 #include <stdio.h>
00005
00006 #include "GroupObject.h"
00007 #include "RawObject.h"
00008 #include "TerminalObject.h"
00009 #include "DLODObject.h"
00010
00011
00022 class TorusGenerator
00023 {
00024 public:
00039 static GraphicalObject * CreateTorus (RawObject * raw_object, double r_t, double r_p, int rings, int slices);
00040
00054 static GraphicalObject * CreateTorus (DLODObject * dlod_object, double r_t, double r_p, int rings, int slices);
00055
00062 static bool HasMore ();
00063
00074 static void StartTorus (double r_t, double r_p, int rings, int slices);
00075
00081 static Point GetNextPoint ();
00082
00083 private:
00085 static int ring_index;
00087 static int slice_index;
00089 static double r_t;
00091 static double r_p;
00093 static int rings;
00095 static int slices;
00096
00111 static GraphicalObject * CreateRings (RawObject * raw_object, double r_t, double r_p, double min_t, double max_t, int rings, int slices);
00112
00127 static GraphicalObject * CreateRingPart (RawObject * raw_object, double r_t, double r_p, double curr_t, double min_p, double max_p, int slices);
00128
00144 static GraphicalObject * CreateRings (DLODObject * dlod_object, double r_t, double r_p, double min_t, double max_t, int rings, int slices);
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162 static GraphicalObject * CreateRingPart (DLODObject * dlod_object, double r_t, double r_p, double curr_t, double min_p, double max_p, int slices);
00163 };
00164
00165 #endif