annotate README.md @ 39:b656ed2e8957

refactor
author Dennis C. M. <dennis@denniscm.com>
date Fri, 14 Jul 2023 20:16:29 +0100
parents 8ed1256dd518
children 50e6f49c32e8
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
31
61104b22a25d I think it is working now...
Dennis C. M. <dennis@denniscm.com>
parents: 28
diff changeset
3 An interactive program to visualize sorting algorithms.
61104b22a25d I think it is working now...
Dennis C. M. <dennis@denniscm.com>
parents: 28
diff changeset
4
61104b22a25d I think it is working now...
Dennis C. M. <dennis@denniscm.com>
parents: 28
diff changeset
5 This project is inspired by - off course - the video by Timo Bingmann called
61104b22a25d I think it is working now...
Dennis C. M. <dennis@denniscm.com>
parents: 28
diff changeset
6 [15 sorting algorithms in 6 minutes](https://www.youtube.com/watch?v=kPRA0W1kECg).
21
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
7
24
bebd95177e96 add images
Dennis C. M. <dennis@denniscm.com>
parents: 21
diff changeset
8 ![Image 1](repo/1.png)
26
2945f5898960 fix typo
Dennis C. M. <dennis@denniscm.com>
parents: 24
diff changeset
9 ![Image 2](repo/2.png)
24
bebd95177e96 add images
Dennis C. M. <dennis@denniscm.com>
parents: 21
diff changeset
10
31
61104b22a25d I think it is working now...
Dennis C. M. <dennis@denniscm.com>
parents: 28
diff changeset
11
21
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
12 ## Compile
8a5a7aee69ce add description
Dennis C. M. <dennis@denniscm.com>
parents: 13
diff changeset
13
4
035d3880da04 render text with number of elements on screen
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
14 ```bash
28
99592fae8ea1 add instructions
Dennis C. M. <dennis@denniscm.com>
parents: 26
diff changeset
15 mkdir build
99592fae8ea1 add instructions
Dennis C. M. <dennis@denniscm.com>
parents: 26
diff changeset
16 cd build
99592fae8ea1 add instructions
Dennis C. M. <dennis@denniscm.com>
parents: 26
diff changeset
17 cmake ..
99592fae8ea1 add instructions
Dennis C. M. <dennis@denniscm.com>
parents: 26
diff changeset
18 make
32
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
19 ```
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
20
33
576431310c8a fix format
Dennis C. M. <dennis@denniscm.com>
parents: 32
diff changeset
21 *Currently I've only tested this project on Linux. However, I would like to prepare it so
32
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
22 that it can be used on Mac and Windows. However, my cross-platform experience is almost
33
576431310c8a fix format
Dennis C. M. <dennis@denniscm.com>
parents: 32
diff changeset
23 non-existent. Maybe in the future I'll check how to do it*
32
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
24
33
576431310c8a fix format
Dennis C. M. <dennis@denniscm.com>
parents: 32
diff changeset
25 ## Run
32
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
26
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
27 To customize the program you can pass the following arguments.
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
28
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
29 ```bash
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
30 ./algo_animator WINDOW_WIDTH WINDOW_HEIGHT RECTANGLE_WIDTH SPACE_BETWEEN_RECTANGLES
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
31 ```
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
32
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
33 The default values are:
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
34
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
35 ```bash
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
36 WINDOW_WIDTH = 1920
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
37 WINDOW_HEIGHT = 1080
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
38 RECTANGLE_WIDTH = 5
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
39 SPACE_BETWEEN_RECTANGLES = 1
4
035d3880da04 render text with number of elements on screen
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
40 ```
32
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
41
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
42 Run the program in a window with width of 1920 pixels and height of 1080 pixels,
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
43 fit the screen with rectangles with width of 50 pixels, and add a space between
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
44 rectangles of 3 pixels.
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
45
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
46 ```bash
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
47 ./algo_animator 1920 1080 50 3
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
48 ```
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
49
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
50 ![Image 3](repo/3.png)
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
51
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
52
33
576431310c8a fix format
Dennis C. M. <dennis@denniscm.com>
parents: 32
diff changeset
53 ## Examples
32
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
54
33
576431310c8a fix format
Dennis C. M. <dennis@denniscm.com>
parents: 32
diff changeset
55 ### Normal mode
32
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
56
36
8425cf9337aa add videos
Dennis C. M. <dennis@denniscm.com>
parents: 35
diff changeset
57 Just run the program and press `ENTER`
8425cf9337aa add videos
Dennis C. M. <dennis@denniscm.com>
parents: 35
diff changeset
58 [Video.webm](https://github.com/denniscmartin/algo-animator/assets/66180929/f75366b4-b8ba-421e-8c1e-f43727a67b4f)
32
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
59
33
576431310c8a fix format
Dennis C. M. <dennis@denniscm.com>
parents: 32
diff changeset
60 ### Slow motion
32
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
61
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
62 Use `u` to increase the delay, then `ENTER` to run the algorithm
36
8425cf9337aa add videos
Dennis C. M. <dennis@denniscm.com>
parents: 35
diff changeset
63 *The delay is applied after each iteration*
37
0e2121235413 update readme
Dennis C. M. <dennis@denniscm.com>
parents: 36
diff changeset
64 [Video.webm](https://github.com/denniscmartin/algo-animator/assets/66180929/b3bcde87-2680-4667-98be-3b3946712254)
32
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
65
33
576431310c8a fix format
Dennis C. M. <dennis@denniscm.com>
parents: 32
diff changeset
66 ### Pause mode
32
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
67
36
8425cf9337aa add videos
Dennis C. M. <dennis@denniscm.com>
parents: 35
diff changeset
68 Press `ENTER` then `p`
37
0e2121235413 update readme
Dennis C. M. <dennis@denniscm.com>
parents: 36
diff changeset
69 [Video.webm](https://github.com/denniscmartin/algo-animator/assets/66180929/6a3ff80c-56dc-4b1a-a811-e3649fe2edde)
32
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
70
33
576431310c8a fix format
Dennis C. M. <dennis@denniscm.com>
parents: 32
diff changeset
71 ### Sequential mode
32
b1a605eb721a accept user inputs
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
72
36
8425cf9337aa add videos
Dennis C. M. <dennis@denniscm.com>
parents: 35
diff changeset
73 Press `q` then press `ENTER` to visualize the algorithm step by step.
37
0e2121235413 update readme
Dennis C. M. <dennis@denniscm.com>
parents: 36
diff changeset
74 [Video.webm](https://github.com/denniscmartin/algo-animator/assets/66180929/743c00d8-5236-437d-85ad-b139611175ef)
36
8425cf9337aa add videos
Dennis C. M. <dennis@denniscm.com>
parents: 35
diff changeset
75
38
8ed1256dd518 finish quick sort and add insertion sort
Dennis C. M. <dennis@denniscm.com>
parents: 37
diff changeset
76 ## Notes
8ed1256dd518 finish quick sort and add insertion sort
Dennis C. M. <dennis@denniscm.com>
parents: 37
diff changeset
77
8ed1256dd518 finish quick sort and add insertion sort
Dennis C. M. <dennis@denniscm.com>
parents: 37
diff changeset
78 This project has not been designed to compare the speed of the algorithms side by side. The main objective is the visualization of the algorithms for educational purposes.