void rotate_object(double, int, int, int);// функция вращения объекта
// двумерная структура дома:
int House[17][4] =
{ /* Start_x Start_y End_x End_y */
120, 120, 120, 200, /* дом */
120, 200, 80, 200,
80, 120, 80, 200,
80, 120, 120, 120,
60, 160, 80, 120, /* крыша */
60, 160, 80, 200,
120, 155, 100, 155, /* дверь */
100, 155, 100, 165,
100, 165, 120, 165,
90, 130, 100, 130, /* окна */
90, 130, 90, 140,
100, 130, 100, 140,
90, 140, 100, 140,
90, 180, 100, 180,
90, 180, 90, 190,
100, 180, 100, 190,
90, 190, 100, 190
};
// изменяющаяся структура дома:
double HouseD[17][4]=
{
120, 120, 120, 200, /* дом */
120, 200, 80, 200,
80, 120, 80, 200,
80, 120, 120, 120,
60, 160, 80, 120, /* крыша */
60, 160, 80, 200,
120, 155, 100, 155, /* дверь */
100, 155, 100, 165,
100, 165, 120, 165,
90, 130, 100, 130, /* окна */
90, 130, 90, 140,
100, 130, 100, 140,
90, 140, 100, 140,
90, 180, 100, 180,
90, 180, 90, 190,
100, 180, 100, 190,
90, 190, 100, 190
};
void main(void)
{
// изменение начального положения дома
for(int i=0; i<17; i++)
{
House[i][0]+=100;
House[i][1]+=50;
House[i][2]+=100;
House[i][3]+=50;
HouseD[i][0]+=100;
HouseD[i][1]+=50;
HouseD[i][2]+=100;
HouseD[i][3]+=50;
}
int graphdriver=DETECT, graphmode, errorcode; // требование автоопределения
if ((errorcode=registerbgidriver(EGAVGA_driver))<0) // драйвер зарегистрирован?
{
cout << "Графическая ошибка:\n" << grapherrormsg(errorcode) << endl;
cout << "Для продолжения нажмите любую клавишу...";
getch();
exit;
}
// Инициализация графической системы:
initgraph(&graphdriver, &graphmode, "d:\Bc31\BGI");
if ((errorcode=graphresult()) != grOk) // обработка ошибки
{
cout << "Графическая ошибка:\n" << grapherrormsg(errorcode) << endl;
cout << "Для продолжения нажмите любую клавишу...";
getch();
exit;
}
settextjustify(LEFT_TEXT, TOP_TEXT); // установка штрихового щрифта
settextstyle(DEFAULT_FONT, HORIZ_DIR, 6);// горизонтальное положение
outtext("Вращение "); // вывод текста
settextstyle(DEFAULT_FONT, HORIZ_DIR, 2);// горизонтальное положение
outtextxy(1, getmaxy()-60, "на угол 450 градусов (=2.5*3.14)");
outtextxy(1, getmaxy()-30, "вокруг окружности");
settextjustify(LEFT_TEXT, TOP_TEXT);
settextstyle(DEFAULT_FONT, VERT_DIR, 7); // вертикальное положение
outtext("Объекта"); // вывод текста
circle(290,210,28); // рисование окружности
setcolor(WHITE); // установка текста
display_object(16); // рисование объекта
getch();
// вращение объекта на 450 градусов вокруг мнимой точки (окружности)
for (double k=0; k<=2.5*M_PI; k+=0.001)
rotate_object(k, 290, 210, 16);
getch();
closegraph(); //закрытие графической системы
}
void display_object(int sides)
{
for(int i=0; i<=sides; i++) // вывод Дома на экран
line(House[i][0], House[i][1], House[i][2], House[i][3]);
}
void rotate_point(double theta,int x, int y, double *xd,double *yd,int x_org,int y_org)
{
/* Вращение точки вокруг центра с координатами x_org и y_org на угол theta */
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.