14 void init(std::string path);
39 static void key_callback(GLFWwindow*
window,
int key,
int scancode,
int action,
int mods)
41 if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
43 glfwSetWindowShouldClose(window, GL_TRUE);
45 if(key == GLFW_KEY_LEFT && action == GLFW_PRESS)
49 if(key == GLFW_KEY_RIGHT && action == GLFW_PRESS)
53 if(key == GLFW_KEY_C && action == GLFW_PRESS)
62 if(key == GLFW_KEY_P && action == GLFW_PRESS)
71 if(key == GLFW_KEY_1 && action == GLFW_PRESS)
75 if(key == GLFW_KEY_2 && action == GLFW_PRESS)
79 if(key == GLFW_KEY_F1 && action == GLFW_PRESS)
83 if(key == GLFW_KEY_F2 && action == GLFW_PRESS)
87 if(key == GLFW_KEY_F3 && action == GLFW_PRESS)
91 if(key == GLFW_KEY_F4 && action == GLFW_PRESS)
101 std::string path =
"../TestData/testitest3.txt";
104 while (!glfwWindowShouldClose(
window))
109 glClear(GL_COLOR_BUFFER_BIT);
124 if(
remove(
"../tmp/tmp.txt" ) != 0 )
126 perror(
"Can't delete the tmp files" );
141 int refresh_rate = 60;
142 glfwWindowHint(GLFW_REFRESH_RATE, refresh_rate);
143 glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
144 glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
145 glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
149 GLFWmonitor* monitor =
nullptr;
151 window = glfwCreateWindow(
width,
height,
"Space Filling Curve Visualisierung", monitor, NULL);
152 glfwMakeContextCurrent(
window);
154 glfwSetKeyCallback(
window, key_callback);
156 glClearColor(1.0f,1.0f,1.0f,0.0f);
158 glewExperimental =
true;
159 GLenum err = glewInit();
163 std::cout << glewGetErrorString(err);
168 shader = loader->
LoadShaders(
"../Shader/vertexshader.vert",
"../Shader/fragmentshader.frag",
"../Shader/geometryshader.geo");
169 delete loader; loader =
nullptr;
222 std::string path =
"../TestData/testitest.txt";
229 std::string path =
"../TestData/testitest2.txt";
236 std::string path =
"../TestData/testitest3.txt";
243 std::string path =
"../TestData/peeroregon.txt";
256 delete visu; visu =
nullptr;
259 glfwDestroyWindow(
window);
274 std::ifstream fscan(path.c_str(), std::ios::in);
275 std::ofstream fout(
"../tmp/tmp.txt", std::ios::out);
276 while (fscan >> s >> f) {
277 fout << s <<
" " << f <<
"\n";
278 if (f < s) { t = s; s = f; f = t; }
279 if (f > maxIndex) { maxIndex = f; }
285 for(
int i = 1; i<=maxIndex; i++)
287 fout << i <<
" " << i <<
"\n";
bool selfloops
Speichert on Kanten von Knoten zu sich selbst hinzugefuegt werden sollen (Wird von Visualisierung noc...
void init(std::string path)
Initialisiert das Fenster und alle Parameter. Path ist der Pfad zur Graphdatei.
void changeType(std::string type)
Aendert den Typ der Visualisierungskurve auf den uebergeben Typ ("hilbert" oder "gosper").
int maxid
Groesste KnotenId.
bool drawCurve
Speichert Benutzereingabe ob die Kurve mit gezeichnet werden soll.
GLuint LoadShaders(const char *vertex_path, const char *fragment_path, const char *geo_path)
Diese Methode laedt die Shader. Parameter sind die jeweiligen Dateipfade.
void draw()
Zeichnet den Inhalt des Fensters.
int changeData
Speichert Benutzeraenderung an dem anzuzeigenden Datensatz (vor allem fuer Vorfuerung).
int n
Knotenanzahl im Graphen.
bool drawPoints
Speichert Benutzereingabe ob die Knotenpunkte mit gezeichnet werden sollen.
void decreaseOrder()
Verringert die Kurvebordnung um 1.
FastCommunity * clusterer
Repraesentiert die Clusterklasse.
GLuint shader
Enthaellt den Zeichenshader.
void cleanup()
Gibt allen Speicher wieder frei.
GLFWwindow * window
Repraesentiert das Fenster.
void addSelfLoops(std::string path)
Fuegt in einer Temporaeren Datei Kanten an jeden Knoten zu sich selbst ein (Wird von der Visualisieru...
void increaseOrder()
Erhoeht die Kurvenordnung um 1.
void update()
Updatet die Visualisierung nach Benutzereingaben.
void draw(GLuint shader, bool drawPoints, bool drawCurve)
Zeichnet den Graphen mit den uebergeben Shader. Die 2 anderen Parameter bestimmen ob zusaetzlich die ...
Visualisation * visu
Dieses Objekt macht die eigentliche Visualisierung.
void initVisualisation(std::string path)
Initialisiert das Clustering und die Visualisierung;.
int changeCurve
Speichert Benutzeraenderungen an der Art der Kurve.