Mercurial > public > algo-animator
comparison README.md @ 31:61104b22a25d
I think it is working now...
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Thu, 29 Jun 2023 18:05:22 +0100 |
parents | 99592fae8ea1 |
children | b1a605eb721a |
comparison
equal
deleted
inserted
replaced
30:f945bcc3571f | 31:61104b22a25d |
---|---|
1 # algo-animator | 1 # algo-animator |
2 | 2 |
3 This project is inspired by - off course - the video by Timo Bingmann called [15 sorting algorithms in 6 minutes](https://www.youtube.com/watch?v=kPRA0W1kECg). | 3 An interactive program to visualize sorting algorithms. |
4 | |
5 This project is inspired by - off course - the video by Timo Bingmann called | |
6 [15 sorting algorithms in 6 minutes](https://www.youtube.com/watch?v=kPRA0W1kECg). | |
4 | 7 |
5  | 8  |
6  | 9  |
10 | |
7 | 11 |
8 ## Compile | 12 ## Compile |
9 | 13 |
10 ```bash | 14 ```bash |
11 mkdir build | 15 mkdir build |
12 cd build | 16 cd build |
13 cmake .. | 17 cmake .. |
14 make | 18 make |
15 ./algo_animator | 19 ./algo_animator |
16 ``` | 20 ``` |
17 | |
18 | |
19 ## To improve | |
20 | |
21 Since `GLUT` is single-thread, I cannot call `glutPostRedisplay()` within `while` or `for loops` to redraw the screen in every | |
22 step of the selected sorting algorithm. I guess the solution is multi-threading, so I can perform the sorting in the second thread | |
23 and post notifications to the main thread to redraw the screen. | |
24 | |
25 Since this is my first OpenGL project and just my second program in C, I am tired and I don't want to spend more time in this project, | |
26 but maybe in the future I'll do it. Right now there are just two algorithms supported. I've implemented them in a way that every function | |
27 call is a single step of the sorting. So, storing the "state" outside the function, I can use `idle()` as the loop of the sorting algorithm. | |
28 | |
29 Let's say we selected `bubble sort`. Once you press `ENTER`, the process will be like this: | |
30 | |
31 ```c | |
32 run = true; | |
33 bubble_sort(); | |
34 glutPostRedisplay; | |
35 bubble_sort(); | |
36 glutPostRedisplay; | |
37 bubble_sort(); | |
38 glutPostRedisplay; | |
39 | |
40 // Continue until the array is sorted | |
41 run = false; | |
42 ``` |