Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <graphics.h>
- #include <math.h>
- using namespace std;
- int WIDTH = 600;
- int HEIGHT = 600;
- int length = 100;
- typedef struct punct
- {
- float x;
- float y;
- } PUNCT;
- /// deseneaza segmentul AB
- void DeseneazaLinie(PUNCT A, PUNCT B)
- {
- line(A.x,A.y,B.x,B.y);
- }
- /// returneaza un punct la lungimea length fata de punctul A la unghiul angle
- PUNCT PunctNou(PUNCT A,float length,float angle)
- {
- float x = A.x, y = A.y;
- float new_x,new_y;
- float angle_radians=2*3.141592*angle/360;
- new_x=x+length*cos(angle_radians);
- new_y=y-length*sin(angle_radians);
- PUNCT P;
- P.x = new_x;
- P.y = new_y;
- return P;
- }
- /// deseneaza forma de ordin "order"
- void DrawShape( PUNCT A, float length, float angle, bool isMirrored, int order )
- {
- PUNCT B,C,D,E,F,G;
- if( !isMirrored )
- {
- B = PunctNou(A,2*length,angle-60);
- C = PunctNou(B,2*length,angle);
- D = PunctNou(C,2*length,angle-60);
- E = PunctNou(D,6*length,angle-180);
- F = PunctNou(D,3*length,angle-180);
- G = PunctNou(B,length,angle-180);
- }
- else if( isMirrored )
- {
- B = PunctNou(A,2*length,angle-120);
- C = PunctNou(B,2*length,angle-180);
- D = PunctNou(C,2*length,angle-120);
- E = PunctNou(D,6*length,angle);
- F = PunctNou(D,3*length,angle);
- G = PunctNou(B,length,angle);
- }
- DeseneazaLinie(A,B);
- DeseneazaLinie(B,C);
- DeseneazaLinie(C,D);
- DeseneazaLinie(D,E);
- DeseneazaLinie(E,A);
- if( order > 1 )
- {
- DrawShape(C,length/2,angle,!isMirrored,order-1);
- DrawShape(F,length/2,angle-180,!isMirrored,order-1);
- if( isMirrored )
- DrawShape(B,length/2,angle+120,isMirrored,order-1);
- else
- DrawShape(B,length/2,angle-120,isMirrored,order-1);
- DrawShape(G,length/2,angle,!isMirrored,order-1);
- }
- }
- int main()
- {
- PUNCT A;
- A.x = WIDTH/3;
- A.y = HEIGHT/3;
- initwindow(WIDTH,HEIGHT);
- for( int order = 1 ; order <= 6 ; order++ )
- {
- cleardevice();
- DrawShape(A,(WIDTH-60)/6,0,0,order);
- outtextxy(150, 30, "Press any key...");
- getch();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment