#include #include #include #include #include "graph_sup.h" struct vertex { double x; double y; struct vertex* next; }; typedef struct vertex vert; typedef vert* poly; double rad(double deg) { return deg/180 * M_PI; } poly makeTri(double x, double y, double r) { vert* p1 = malloc(sizeof(vert)); p1->x = x + cos(rad(30)) * r; p1->y = y + sin(rad(30)) * r; vert* p2 = malloc(sizeof(vert)); p2->x = x + cos(rad(150)) * r; p2->y = y + sin(rad(150)) * r; vert* p3 = malloc(sizeof(vert)); p3->x = x + cos(rad(270)) * r; p3->y = y + sin(rad(270)) * r; p1->next = p2; p2->next = p3; p3->next = p1; return p1; } void incPoly(poly* tri_add) { poly tri = *tri_add; vert* start = tri; int has_started = 0; while (tri != start || has_started == 0) { has_started = 1; int x = tri->x; int y = tri->y; vert* next = tri->next; int xx = next->x; int yy = next->y; vert* p1 = malloc(sizeof(vert)); vert* p2 = malloc(sizeof(vert)); vert* p3 = malloc(sizeof(vert)); double tx = (xx - x) / 3; double ty = (yy - y) / 3; p1->x = x + tx; p1->y = y + ty; p3->x = x + tx * 2; p3->y = y + ty * 2; p2->x = p1->x + (cos(rad(-60)) * tx - sin(rad(-60)) * ty); p2->y = p1->y + (sin(rad(-60)) * tx + cos(rad(-60)) * ty); tri->next = p1; p1->next = p2; p2->next = p3; p3->next = next; tri = tri->next->next->next->next; } } void drawPoly(poly tri) { vert* start = tri; int has_started = 0; while (tri != start || has_started == 0) { has_started = 1; int x = tri->x; int y = tri->y; vert* next = tri->next; int xx = next->x; int yy = next->y; tri = tri->next; DessinerSegment(x, y, xx, yy); } } int main(int argc, char * argv[]) { poly tri = makeTri(1920/2, 1080/2, 550); InitialiserGraphique(); CreerFenetre(100, 100, 1920, 1080); SetColor(255, 0, 0); for (int i = 0; i < 10; i++) incPoly(&tri); drawPoly(tri); Touche(); FermerGraphique(); return EXIT_SUCCESS; }