Update main.c
This commit is contained in:
25
main.c
25
main.c
@@ -6,12 +6,16 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#define clear_terminal() printf("\e[1;1H\e[2J"); // Clears the terminal
|
#define clear_terminal() printf("\e[1;1H\e[2J"); // Clears the terminal
|
||||||
|
#define STEP_ROT_X 0.0093
|
||||||
|
#define STEP_ROT_Y 0.0048
|
||||||
|
#define STEP_THETA 0.031
|
||||||
|
#define STEP_PHI 0.016
|
||||||
|
|
||||||
// Function allocates memory for the frame buffer
|
// Function allocates memory for the frame buffer
|
||||||
char **allocate_memory(int size) {
|
char **allocate_memory(int size) {
|
||||||
char **array = malloc(size * sizeof(char *));
|
char **array = malloc(size * sizeof(char *));
|
||||||
|
|
||||||
for (int i = 0; i < size; i++)
|
for (int i = 0; i < size; ++i)
|
||||||
array[i] = malloc(size * sizeof(char));
|
array[i] = malloc(size * sizeof(char));
|
||||||
|
|
||||||
return array;
|
return array;
|
||||||
@@ -33,14 +37,17 @@ int get_terminal_size() {
|
|||||||
|
|
||||||
// Function dumps the frame into the terminal
|
// Function dumps the frame into the terminal
|
||||||
void dump_frame(char **frame, int size) {
|
void dump_frame(char **frame, int size) {
|
||||||
for (int i = 0; i < size; i++)
|
for (int i = 0; i < size; ++i) {
|
||||||
printf("%s\n", frame[i]);
|
for (int j = 0; j < size; ++j)
|
||||||
|
putchar(frame[i][j]);
|
||||||
|
putchar('\n');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Function builds the frame and returns the frame buffer
|
// Function builds the frame and returns the frame buffer
|
||||||
char **build_frame(char **frame, int frame_num, int size, int K) {
|
char **build_frame(char **frame, int frame_num, int size, int K) {
|
||||||
float x = frame_num * 0.0093; // Rotational speed around the x axis
|
float x = frame_num * STEP_ROT_X; // Rotational speed around the x axis
|
||||||
float y = frame_num * 0.0048; // Rotational speed around the y axis
|
float y = frame_num * STEP_ROT_Y; // Rotational speed around the y axis
|
||||||
|
|
||||||
float cos_x = cos(x), sin_x = sin(x); // Precomputing sines and cosines of x
|
float cos_x = cos(x), sin_x = sin(x); // Precomputing sines and cosines of x
|
||||||
float cos_y = cos(y), sin_y = sin(y); // Precomputing sines and cosines of y
|
float cos_y = cos(y), sin_y = sin(y); // Precomputing sines and cosines of y
|
||||||
@@ -48,20 +55,20 @@ char **build_frame(char **frame, int frame_num, int size, int K) {
|
|||||||
float z_buffer[size][size]; // Declaring buffer for storing z coordinates
|
float z_buffer[size][size]; // Declaring buffer for storing z coordinates
|
||||||
|
|
||||||
// Initializing frame buffer and z buffer
|
// Initializing frame buffer and z buffer
|
||||||
for (int i = 0; i < size; i++)
|
for (int i = 0; i < size; ++i)
|
||||||
for (int j = 0; j < size; j++) {
|
for (int j = 0; j < size; ++j) {
|
||||||
frame[i][j] = ' ';
|
frame[i][j] = ' ';
|
||||||
z_buffer[i][j] = 0;
|
z_buffer[i][j] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Loop uses theta to revolve a point around the center of the circle
|
// Loop uses theta to revolve a point around the center of the circle
|
||||||
// 6.283186 = 2 * Pi = 360°
|
// 6.283186 = 2 * Pi = 360°
|
||||||
for (float theta = 0; theta < 6.283186; theta += 0.031) {
|
for (float theta = 0; theta < 6.283186; theta += STEP_THETA) {
|
||||||
// Precomputing sines and cosines of theta
|
// Precomputing sines and cosines of theta
|
||||||
float cos_theta = cos(theta), sin_theta = sin(theta);
|
float cos_theta = cos(theta), sin_theta = sin(theta);
|
||||||
|
|
||||||
// Loop uses phi to revolve the circle around the center of the torus
|
// Loop uses phi to revolve the circle around the center of the torus
|
||||||
for (float phi = 0; phi < 6.283186; phi += 0.016) {
|
for (float phi = 0; phi < 6.283186; phi += STEP_PHI) {
|
||||||
// Precomputing sines and cosines of phi
|
// Precomputing sines and cosines of phi
|
||||||
float cos_phi = cos(phi), sin_phi = sin(phi);
|
float cos_phi = cos(phi), sin_phi = sin(phi);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user