Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / 2 / 4

.CPP
Скачиваний:
22
Добавлен:
16.04.2013
Размер:
2.07 Кб
Скачать
//Џа®Ја ¬¬  аЁбгҐв з бЁЄЁ б ¤ўЁЈ ойЁ¬бп ¬ пв­ЁЄ®¬ (е®а®и п Їа®Ј )
#include <stdlib.h>
#include <dos.h>
#include <stdio.h>
#include <conio.h>
#include <bios.h>
#include <graphics.h>
#include <math.h>

float x[91],y[91];
float CosPhi = cos (1*M_PI /180 );
float SinPhi = sin (1*M_PI /180 );

void DrawClock()
{
    rectangle(250,150,350,250);
    line(250,150,300,100);
    line(350,150,300,100);
    circle(300,200,30);
    line(300,200,300,170);
    line(300,200,330,200);
}

void Rotate ()
{   float x1,y1;
     for (int i=0; i<90; i++)
	     {
		x1 = x[i] * CosPhi - y[i] * SinPhi;
		y1 = x[i] * SinPhi + y[i] * CosPhi;
		x[i+1]=x1;
		y[i+1]=y1;
	     }
}

void Draw()
{    int rx1,ry1,rx2,ry2;
	setwritemode(XOR_PUT);
	setcolor(WHITE);
     for (int i=0; i<90; i++)
	     {
	    line(300,250,(int)(300+x[i]),(int)(250+y[i]));
	    rx1=(int)(300+x[i])-7;

	    rx2=(int)(300+x[i])+7;
	    ry1=(int)(250+y[i])-7;
	    ry2=(int)(250+y[i])+7;
	    rectangle(rx1,ry1,rx2,ry2);
	    delay(20);
	    line(300,250,(int)(300+x[i]),(int)(250+y[i]));
	    rectangle(rx1,ry1,rx2,ry2);
	     }
     for ( i=89; i!=-1; i--)
	     {
	    rx1=(int)(300+x[i])-7;
	    rx2=(int)(300+x[i])+7;
	    ry1=(int)(250+y[i])-7;
	    ry2=(int)(250+y[i])+7;
	    rectangle(rx1,ry1,rx2,ry2);
	    line(300,250,(int)(300+x[i]),(int)(250+y[i]));
	    delay(20);
	    rectangle(rx1,ry1,rx2,ry2);
	    line(300,250,(int)(300+x[i]),(int)(250+y[i]));
	    }
}


void main()
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;

/* initialize graphics mode */
initgraph(&gdriver, &gmode, "E:\\C3.1\\BGI");

/* read result of initialization */
errorcode = graphresult();

if (errorcode != grOk)  /* an error occurred */
{
   printf("Graphics error: %s\n", grapherrormsg(errorcode));
   printf("Press any key to halt:");
   getch();
   exit(1);             /* return with error code */
}
x[0]=50;
y[0]=50;
DrawClock();
Rotate();

while(!bioskey(1))
	{    Draw();    }

getchar();
closegraph();
}
Соседние файлы в папке 2