*** empty log message ***
[lsystem3d.git] / src / turtle.h
index d56c09a371acd848cd19990bcb3ae8204d3f5ef6..c005d13b2a2b9cd734a15cdd5614696c546d7d5b 100644 (file)
@@ -33,14 +33,14 @@ using namespace std;
 
 
 /**
- * The model renderer
+ * The model creator
  */
 class Turtle
 {
 public:
     /**
      * Constructor
-     * @param model render this model
+     * @param model create this model
      */
     Turtle(Model *model);
 
@@ -89,6 +89,11 @@ public:
      */
     void walk();
     
+    /**
+     * Walk forward, creating a filled surface
+     */
+    void fillWalk();
+    
     /**
      * Save current state to stack
      */
@@ -104,21 +109,6 @@ public:
      */
     void reset();
     
-    /**
-     * Decrement diameter of segment
-     */
-    void decrementDiameter();
-    
-    /**
-     * Begin creation of a filled surface
-     */
-    void fenceInBegin();
-    
-    /**
-     * End creation of a filled surface
-     */
-    void fenceInEnd();
-    
     /**
      * Set turn/pitch/roll angle
      * @param angle the angle, in radians
@@ -133,23 +123,22 @@ public:
     
 protected:
     
-    Coordinate _position;       // current position
+    Coordinate _position;       // Current position
     
-    Vector _heading;    // forward pointing vector
-    Vector _left;       // left pointing vector
-    Vector _up;         // up pointing vector
+    Vector _heading;    // Forward pointing vector
+    Vector _left;       // Left pointing vector
+    Vector _up;         // Up pointing vector
     
-    double _angle;          // turn/pitch/roll angle
-    double _diameter;       // diameter of segment
-    bool _fenceMode;        // create filled surface?
+    double _angle;      // Turn/pitch/roll angle, in radians
     
-    stack<Coordinate> _positionStack;       // positions in stack
-    stack<Vector> _headingStack;            // heading vectors in stack
-    stack<Vector> _leftStack;               // left vectors in stack
-    stack<Vector> _upStack;                 // up vectors in stack
-    stack<double> _diameterStack;           // diameters in stack
+    stack<Coordinate> _positionStack;       // Positions in stack
+    stack<Vector> _headingStack;            // Heading vectors in stack
+    stack<Vector> _leftStack;               // Left vectors in stack
+    stack<Vector> _upStack;                 // Up vectors in stack
+    stack<double> _diameterStack;           // Diameters in stack
+    stack<int> _colorIndexStack;            // Colors indices in stack
     
-    Model *_model;    // the rendered model
+    Model *_model;    // The created model
 };