@@ -21,22 +21,26 @@ float ooz;
2121int xp, yp;
2222int idx;
2323
24- float calculateX (int i, int j, int k) {
24+ float calculateX (int i, int j, int k)
25+ {
2526 return j * sin (A) * sin (B) * cos (C) - k * cos (A) * sin (B) * cos (C) +
2627 j * cos (A) * sin (C) + k * sin (A) * sin (C) + i * cos (B) * cos (C);
2728}
2829
29- float calculateY (int i, int j, int k) {
30+ float calculateY (int i, int j, int k)
31+ {
3032 return j * cos (A) * cos (C) + k * sin (A) * cos (C) -
3133 j * sin (A) * sin (B) * sin (C) + k * cos (A) * sin (B) * sin (C) -
3234 i * cos (B) * sin (C);
3335}
3436
35- float calculateZ (int i, int j, int k) {
37+ float calculateZ (int i, int j, int k)
38+ {
3639 return k * cos (A) * cos (B) - j * sin (A) * cos (B) + i * sin (B);
3740}
3841
39- void calculateForSurface (float cubeX, float cubeY, float cubeZ, int ch) {
42+ void calculateForSurface (float cubeX, float cubeY, float cubeZ, int ch)
43+ {
4044 x = calculateX (cubeX, cubeY, cubeZ);
4145 y = calculateY (cubeX, cubeY, cubeZ);
4246 z = calculateZ (cubeX, cubeY, cubeZ) + distanceFromCam;
@@ -47,25 +51,30 @@ void calculateForSurface(float cubeX, float cubeY, float cubeZ, int ch) {
4751 yp = (int )(height / 2 + K1 * ooz * y);
4852
4953 idx = xp + yp * width;
50- if (idx >= 0 && idx < width * height) {
51- if (ooz > zBuffer[idx]) {
54+ if (idx >= 0 && idx < width * height)
55+ {
56+ if (ooz > zBuffer[idx])
57+ {
5258 zBuffer[idx] = ooz;
5359 buffer[idx] = ch;
5460 }
5561 }
5662}
5763
58- int main () {
64+ int main ()
65+ {
5966 printf (" \x1b [2J" );
60- while (1 ) {
67+ while (true )
68+ {
6169 memset (buffer, backgroundASCIICode, width * height);
6270 memset (zBuffer, 0 , width * height * 4 );
6371 cubeWidth = 20 ;
6472 horizontalOffset = -2 * cubeWidth;
6573 // first cube
66- for (float cubeX = -cubeWidth; cubeX < cubeWidth; cubeX += incrementSpeed) {
67- for (float cubeY = -cubeWidth; cubeY < cubeWidth;
68- cubeY += incrementSpeed) {
74+ for (float cubeX = -cubeWidth; cubeX < cubeWidth; cubeX += incrementSpeed)
75+ {
76+ for (float cubeY = -cubeWidth; cubeY < cubeWidth; cubeY += incrementSpeed)
77+ {
6978 calculateForSurface (cubeX, cubeY, -cubeWidth, ' @' );
7079 calculateForSurface (cubeWidth, cubeY, cubeX, ' $' );
7180 calculateForSurface (-cubeWidth, cubeY, -cubeX, ' ~' );
@@ -74,12 +83,14 @@ int main() {
7483 calculateForSurface (cubeX, cubeWidth, cubeY, ' +' );
7584 }
7685 }
86+
7787 cubeWidth = 10 ;
7888 horizontalOffset = 1 * cubeWidth;
7989 // second cube
80- for (float cubeX = -cubeWidth; cubeX < cubeWidth; cubeX += incrementSpeed) {
81- for (float cubeY = -cubeWidth; cubeY < cubeWidth;
82- cubeY += incrementSpeed) {
90+ for (float cubeX = -cubeWidth; cubeX < cubeWidth; cubeX += incrementSpeed)
91+ {
92+ for (float cubeY = -cubeWidth; cubeY < cubeWidth; cubeY += incrementSpeed)
93+ {
8394 calculateForSurface (cubeX, cubeY, -cubeWidth, ' @' );
8495 calculateForSurface (cubeWidth, cubeY, cubeX, ' $' );
8596 calculateForSurface (-cubeWidth, cubeY, -cubeX, ' ~' );
@@ -88,12 +99,14 @@ int main() {
8899 calculateForSurface (cubeX, cubeWidth, cubeY, ' +' );
89100 }
90101 }
102+
91103 cubeWidth = 5 ;
92104 horizontalOffset = 8 * cubeWidth;
93105 // third cube
94- for (float cubeX = -cubeWidth; cubeX < cubeWidth; cubeX += incrementSpeed) {
95- for (float cubeY = -cubeWidth; cubeY < cubeWidth;
96- cubeY += incrementSpeed) {
106+ for (float cubeX = -cubeWidth; cubeX < cubeWidth; cubeX += incrementSpeed)
107+ {
108+ for (float cubeY = -cubeWidth; cubeY < cubeWidth; cubeY += incrementSpeed)
109+ {
97110 calculateForSurface (cubeX, cubeY, -cubeWidth, ' @' );
98111 calculateForSurface (cubeWidth, cubeY, cubeX, ' $' );
99112 calculateForSurface (-cubeWidth, cubeY, -cubeX, ' ~' );
@@ -102,8 +115,10 @@ int main() {
102115 calculateForSurface (cubeX, cubeWidth, cubeY, ' +' );
103116 }
104117 }
118+
105119 printf (" \x1b [H" );
106- for (int k = 0 ; k < width * height; k++) {
120+ for (int k = 0 ; k < width * height; k++)
121+ {
107122 putchar (k % width ? buffer[k] : 10 );
108123 }
109124
@@ -112,5 +127,6 @@ int main() {
112127 C += 0.01 ;
113128 usleep (8000 * 2 );
114129 }
130+
115131 return 0 ;
116132}
0 commit comments