annotate README.md @ 30:f945bcc3571f

refactor
author Dennis C. M. <dennis@denniscm.com>
date Thu, 29 Jun 2023 17:48:36 +0100
parents 99592fae8ea1
children 61104b22a25d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
035d3880da04 render text with number of elements on screen
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
1 # algo-animator
035d3880da04 render text with number of elements on screen
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
2
21
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
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).
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
4
24
bebd95177e96 add images
Dennis C. M. <dennis@denniscm.com>
parents: 21
diff changeset
5 ![Image 1](repo/1.png)
26
2945f5898960 fix typo
Dennis C. M. <dennis@denniscm.com>
parents: 24
diff changeset
6 ![Image 2](repo/2.png)
24
bebd95177e96 add images
Dennis C. M. <dennis@denniscm.com>
parents: 21
diff changeset
7
21
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
8 ## Compile
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
9
4
035d3880da04 render text with number of elements on screen
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
10 ```bash
28
99592fae8ea1 add instructions
Dennis C. M. <dennis@denniscm.com>
parents: 26
diff changeset
11 mkdir build
99592fae8ea1 add instructions
Dennis C. M. <dennis@denniscm.com>
parents: 26
diff changeset
12 cd build
99592fae8ea1 add instructions
Dennis C. M. <dennis@denniscm.com>
parents: 26
diff changeset
13 cmake ..
99592fae8ea1 add instructions
Dennis C. M. <dennis@denniscm.com>
parents: 26
diff changeset
14 make
99592fae8ea1 add instructions
Dennis C. M. <dennis@denniscm.com>
parents: 26
diff changeset
15 ./algo_animator
4
035d3880da04 render text with number of elements on screen
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
16 ```
21
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
17
28
99592fae8ea1 add instructions
Dennis C. M. <dennis@denniscm.com>
parents: 26
diff changeset
18
21
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
19 ## To improve
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
20
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
21 Since `GLUT` is single-thread, I cannot call `glutPostRedisplay()` within `while` or `for loops` to redraw the screen in every
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
22 step of the selected sorting algorithm. I guess the solution is multi-threading, so I can perform the sorting in the second thread
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
23 and post notifications to the main thread to redraw the screen.
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
24
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
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,
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
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
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
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.
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
28
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
29 Let's say we selected `bubble sort`. Once you press `ENTER`, the process will be like this:
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
30
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
31 ```c
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
32 run = true;
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
33 bubble_sort();
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
34 glutPostRedisplay;
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
35 bubble_sort();
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
36 glutPostRedisplay;
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
37 bubble_sort();
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
38 glutPostRedisplay;
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
39
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
40 // Continue until the array is sorted
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
41 run = false;
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
42 ```