Visualisierung2
L_System.h
Go to the documentation of this file.
1 #pragma once
2 #include <glew.h>
3 #include <gl\GL.h>
4 #include <glm\glm.hpp>
5 #include <vector>
6 
7 #define _USE_MATH_DEFINES
8 #include <math.h>
9 
18 class L_System
19 {
20 public:
21  L_System(int width, int height, std::string t);
22  ~L_System(void);
23 
24  void draw(GLuint shader);
25 
26  int getSegmentCount();
27  int getIteration();
28  int getDrawingIteration();
29  std::string getType();
30  std::vector<glm::vec3> getPoints(int order);
31 
32  void setDrawingIteration(int order);
33 
34  void iterate();
37 
38 private:
39  void initCurve(int w, int h);
40  void initHilbert();
41  void initGosper();
42 
43  std::string getRule(char var);
44  double degToRad(double angle);
45 
46  std::vector<GLuint> vao;
47  std::vector<GLuint> positionBuffer;
48  std::vector<int> positioncount;
49  std::vector<std::vector<glm::vec3>> points;
50 
51  int width;
52  int height;
53  int iteration;
55  double distance;
56  double delta;
58  std::string type;
59  std::string currentString;
60  std::vector<std::string> rules;
61 
65  struct state
66  {
67  double x;
68  double y;
69  double angle;
70 
71  state(double xPos, double yPos, double newangle)
72  {
73  x = xPos;
74  y = yPos;
75  angle = newangle;
76  }
77  };
78 };
79 
std::vector< std::vector< glm::vec3 > > points
Liste von Positionslisten. An der Stelle i sind die Knotenpositionen der Kurve von Grad i-1...
Definition: L_System.h:49
std::string type
Aktueller Kurventyp.
Definition: L_System.h:58
void decreaseDrawingIteration()
veringere die zu zeichnende Iterationsstufe um 1.
Definition: L_System.cpp:209
std::string currentString
Aktueller String der zu berechnenden Iterationsstufe.
Definition: L_System.h:59
std::vector< glm::vec3 > getPoints(int order)
Gibt die Kurveneckpunkte in der Iterationstiefe order zurueck. Sollte order groesser als die aktuell ...
Definition: L_System.cpp:219
std::vector< int > positioncount
Liste von Anzahl der Knoten. An der Stelle i ist die Knotenanzahl der Kurve von Grad i-1...
Definition: L_System.h:48
int segmentcount
Anzahl der Segmente der aktuell maximalen Iterationsstufe.
Definition: L_System.h:57
state(double xPos, double yPos, double newangle)
Definition: L_System.h:71
L_System(int width, int height, std::string t)
Dem Konstruktor wird die Breite und Hoehe des Fensters uebergeben. Diese werden nur fuer die Initialk...
Definition: L_System.cpp:10
int getDrawingIteration()
Gibt die Iterationstiefe zurueck die aktuell gezeichnet wird.
Definition: L_System.cpp:173
double delta
Winkel der bei einer Winkelaenderung auf den aktuellen Winkel ab oder angerechnet wird...
Definition: L_System.h:56
std::string getRule(char var)
Ueberprueft ob es fuer den uebergebenen char eine Ersetzungsregel gibt und gibt diese, falls vorhanden, zurueck.
Definition: L_System.cpp:113
int drawingIteration
Aktuell zu zeichnende Iterationsstufe.
Definition: L_System.h:54
std::string getType()
Gibt den Typ der Kurve zurueck ("hilbert" oder "gosper").
Definition: L_System.cpp:190
double x
Aktuelle x Koordinate.
Definition: L_System.h:67
std::vector< GLuint > vao
Liste von Vertex Array Objects. An der Stelle i ist das vao der Kurve von Grad i-1.
Definition: L_System.h:46
void draw(GLuint shader)
Zeichnet die aktuelle Kurve.
Definition: L_System.cpp:136
double distance
Laenge eines Kurvensegments.
Definition: L_System.h:55
void initHilbert()
Setzt den Startstring und die Kurveneigenschaften der Hilbertkurve.
Definition: L_System.cpp:78
void initCurve(int w, int h)
Initialisiert eine Standartkurve als Order 0 Kurve und allgemeine Parameter.
Definition: L_System.cpp:53
void iterate()
Die maximale Iterationsstufe wird um 1 erhoeht und die Punkte der naechsten Iterationsstufe berechnet...
Definition: L_System.cpp:233
int iteration
Aktuell maximale Iterationsstufe.
Definition: L_System.h:53
void initGosper()
Setzt den Startstring und die Kurveneigenschaften der Gosperkurve.
Definition: L_System.cpp:94
int height
Hoehe des Anzeigefensters.
Definition: L_System.h:52
int getSegmentCount()
Gibt die aktuelle Anzahl der Kurvensegmente zurueck.
Definition: L_System.cpp:159
void setDrawingIteration(int order)
Setzt die zu zeichnende Iterationsstufe auf order falls order kleiner als die maximale Iterationsstuf...
Definition: L_System.cpp:180
double y
Aktuelle y Koordinate.
Definition: L_System.h:68
~L_System(void)
Definition: L_System.cpp:124
double angle
Aktueller Winkel.
Definition: L_System.h:69
void increaseDrawingIteration()
erhoehe die zu zeichnende Iterationsstufe um 1.
Definition: L_System.cpp:197
GLuint shader
Enthaellt den Zeichenshader.
Definition: main.cpp:26
int width
Breite des Anzeigefensters.
Definition: L_System.h:51
std::vector< GLuint > positionBuffer
Liste von Positionsbuffern. An der Stelle i ist der Buffer der Kurve von Grad i-1.
Definition: L_System.h:47
std::vector< std::string > rules
Liste von Ersetzungsregeln.
Definition: L_System.h:60
int getIteration()
Gibt die aktuell maximale Iterationstiefe zurueck.
Definition: L_System.cpp:166
double degToRad(double angle)
Rechnet Gradwinkel in Radiant um.
Definition: L_System.cpp:152