Added moving ability
Press the arrow keys to move in the graph in real time
This commit is contained in:
65
polynome.c
65
polynome.c
@@ -2,6 +2,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include <Windows.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include "polynome.h"
|
#include "polynome.h"
|
||||||
@@ -74,9 +75,13 @@ enum STATUS Calcul_Derivee(Poly* poly, float x, float *out) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Dessiner_Separateur() {
|
void Dessiner_Separateur() {
|
||||||
|
//1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
||||||
|
//1 2 3 4 5 6
|
||||||
|
//xmin = -5
|
||||||
|
//xmax = 15
|
||||||
printf("+-----+");
|
printf("+-----+");
|
||||||
for (int i = 0; i <= LONGUEUR_X*2; i++) {
|
for (int i = 0; i <= LONGUEUR_X_TAB*2; i++) {
|
||||||
if (i == LONGUEUR_X) {
|
if (i == LONGUEUR_X_TAB*2 - LONGUEUR_X_MAX) {
|
||||||
printf("--+-");
|
printf("--+-");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -86,6 +91,12 @@ void Dessiner_Separateur() {
|
|||||||
printf("-+\n");
|
printf("-+\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Dessiner_Actualiser(Poly* poly) {
|
||||||
|
system("cls");
|
||||||
|
Dessiner_Graph(poly);
|
||||||
|
printf("\nPress [ESC] to exit.");
|
||||||
|
}
|
||||||
|
|
||||||
enum STATUS Dessiner_Graph(Poly* poly) {
|
enum STATUS Dessiner_Graph(Poly* poly) {
|
||||||
if (poly == NULL) {
|
if (poly == NULL) {
|
||||||
return FAIL;
|
return FAIL;
|
||||||
@@ -93,7 +104,7 @@ enum STATUS Dessiner_Graph(Poly* poly) {
|
|||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
Dessiner_Separateur();
|
Dessiner_Separateur();
|
||||||
for (int j = LONGUEUR_Y; j >= -LONGUEUR_Y; j--) {
|
for (int j = LONGUEUR_Y_MAX; j >= LONGUEUR_Y_MIN; j--) {
|
||||||
|
|
||||||
if (j < -9) {
|
if (j < -9) {
|
||||||
printf("| %d | ",j);
|
printf("| %d | ",j);
|
||||||
@@ -111,8 +122,8 @@ enum STATUS Dessiner_Graph(Poly* poly) {
|
|||||||
printf("| 00%d | ",j);
|
printf("| 00%d | ",j);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = -LONGUEUR_X; i <= LONGUEUR_X+1; i++) {
|
for (int i = LONGUEUR_X_MIN; i <= LONGUEUR_X_MAX+1; i++) {
|
||||||
if (i > LONGUEUR_X) {
|
if (i > LONGUEUR_X_MAX) {
|
||||||
printf("|");
|
printf("|");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -189,7 +200,7 @@ enum STATUS Dessiner_Graph(Poly* poly) {
|
|||||||
Dessiner_Separateur();
|
Dessiner_Separateur();
|
||||||
printf("| | ");
|
printf("| | ");
|
||||||
|
|
||||||
for (int k = -LONGUEUR_Y; k <= LONGUEUR_Y; k++) {
|
for (int k = LONGUEUR_X_MIN; k <= LONGUEUR_X_MAX; k++) {
|
||||||
if (k < 0) {
|
if (k < 0) {
|
||||||
printf("-");
|
printf("-");
|
||||||
}
|
}
|
||||||
@@ -211,6 +222,8 @@ enum STATUS Dessiner_Graph(Poly* poly) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char* argv[]) {
|
int main(int argc, char* argv[]) {
|
||||||
|
system("cls");
|
||||||
|
|
||||||
if (argc < 4) {
|
if (argc < 4) {
|
||||||
fprintf(stderr, "%s", "[-] usage : poly.exe a b c [--size 20] [--colors]\n");
|
fprintf(stderr, "%s", "[-] usage : poly.exe a b c [--size 20] [--colors]\n");
|
||||||
return 1;
|
return 1;
|
||||||
@@ -223,14 +236,17 @@ int main(int argc, char* argv[]) {
|
|||||||
if (argc > 4) {
|
if (argc > 4) {
|
||||||
if (strcmp(argv[4], "--size") == 0) {
|
if (strcmp(argv[4], "--size") == 0) {
|
||||||
if (argc >= 5) {
|
if (argc >= 5) {
|
||||||
LONGUEUR_X = strtol(argv[5], NULL, 10);
|
LONGUEUR_X_MAX = strtol(argv[5], NULL, 10);
|
||||||
|
LONGUEUR_Y_MAX = LONGUEUR_X_MAX;
|
||||||
|
LONGUEUR_Y_MIN = -LONGUEUR_X_MAX;
|
||||||
|
LONGUEUR_X_MIN = -LONGUEUR_X_MAX;
|
||||||
|
LONGUEUR_X_TAB = LONGUEUR_X_MAX;
|
||||||
|
LONGUEUR_Y_TAB = LONGUEUR_X_MAX;
|
||||||
|
|
||||||
if (LONGUEUR_X >= 100) {
|
if (LONGUEUR_X_MAX >= 100) {
|
||||||
fprintf(stderr, "%s", "[-] Size can't be greater than 99.\n");
|
fprintf(stderr, "%s", "[-] Size can't be greater than 99.\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
LONGUEUR_Y = LONGUEUR_X;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -295,6 +311,35 @@ int main(int argc, char* argv[]) {
|
|||||||
fprintf(stderr, "%s", "[-] Error while drawing the graph.\n");
|
fprintf(stderr, "%s", "[-] Error while drawing the graph.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf("\nPress [ESC] to exit.");
|
||||||
|
while (1) {
|
||||||
|
Sleep(50);
|
||||||
|
|
||||||
|
if (GetAsyncKeyState(VK_ESCAPE) & 0x8000) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (GetAsyncKeyState(VK_RIGHT) & 0x8000) {
|
||||||
|
LONGUEUR_X_MAX += 5;
|
||||||
|
LONGUEUR_X_MIN = LONGUEUR_X_MAX - LONGUEUR_X_TAB*2;
|
||||||
|
Dessiner_Actualiser(poly);
|
||||||
|
}
|
||||||
|
if (GetAsyncKeyState(VK_LEFT) & 0x8000) {
|
||||||
|
LONGUEUR_X_MAX -= 5;
|
||||||
|
LONGUEUR_X_MIN = LONGUEUR_X_MAX - LONGUEUR_X_TAB*2;
|
||||||
|
Dessiner_Actualiser(poly);
|
||||||
|
}
|
||||||
|
if (GetAsyncKeyState(VK_UP) & 0x8000) {
|
||||||
|
LONGUEUR_Y_MAX += 5;
|
||||||
|
LONGUEUR_Y_MIN = LONGUEUR_Y_MAX - LONGUEUR_Y_TAB*2;
|
||||||
|
Dessiner_Actualiser(poly);
|
||||||
|
}
|
||||||
|
if (GetAsyncKeyState(VK_DOWN) & 0x8000) {
|
||||||
|
LONGUEUR_Y_MAX -= 5;
|
||||||
|
LONGUEUR_Y_MIN = LONGUEUR_Y_MAX - LONGUEUR_Y_TAB*2;
|
||||||
|
Dessiner_Actualiser(poly);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
free(poly);
|
free(poly);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -25,9 +25,14 @@ enum STATUS Calcul_Sommet(Poly* poly);
|
|||||||
enum STATUS Calcul_Fonction(Poly* poly, float x, float *out);
|
enum STATUS Calcul_Fonction(Poly* poly, float x, float *out);
|
||||||
enum STATUS Calcul_Derivee(Poly* poly, float x, float *out);
|
enum STATUS Calcul_Derivee(Poly* poly, float x, float *out);
|
||||||
|
|
||||||
int LONGUEUR_X = 20;
|
int LONGUEUR_X_MAX = 20;
|
||||||
int LONGUEUR_Y = 20;
|
int LONGUEUR_Y_MAX = 20;
|
||||||
|
int LONGUEUR_Y_MIN = -20;
|
||||||
|
int LONGUEUR_X_MIN = -20;
|
||||||
|
int LONGUEUR_X_TAB = 20;
|
||||||
|
int LONGUEUR_Y_TAB = 20;
|
||||||
void Dessiner_Separateur();
|
void Dessiner_Separateur();
|
||||||
int use_colors = false;
|
int use_colors = false;
|
||||||
|
void Dessiner_Actualiser(Poly* poly);
|
||||||
enum STATUS Dessiner_Graph(Poly* poly);
|
enum STATUS Dessiner_Graph(Poly* poly);
|
||||||
int main();
|
int main();
|
||||||
Reference in New Issue
Block a user