Страница 1 из 1

Вращение квадрата

Добавлено: 18 фев 2010, 20:47
maalik
у меня лаба : ""в графическом режиме (640*480) начертить квадрат со стороной 50<a<120. параметр а задать с консоли. пронумеровать каждую вершину квадрата номером 1, 2, 3, 4 соответственно. с помощью клавиш 1, 2, 3, 4 выделить "активную"", соотв номеру вершину. номер активной вершины должен отображаться цветом отличным от цвета квадрата . с помощью клавиш "влево" и "вправо" обеспечить вращение квадрата относительно выбранной активной вершины влево и вправо соотв."" у меня написано половина програмы но я не знаю как заставить квадрат вращаться помогите плиз если сможете вот моя прога

Код: Выделить всё

#include<conio.h>
#include<stdio.h>
#include<dos.h>
#include<graphics.h>
#include<math.h>
#define PATHTODRIVER "D:\\BC\\BC\\BIN\\"
void main (void)
{int gdriver=DETECT;
int gmode;
int errorcode;
initgraph (&gdriver, &gmode, PATHTODRIVER);
errorcode=graphresult();
if (errorcode!=grOk)
{printf( "yak%d\n", errorcode);
getch();
return;}
int x1=280, y1=200, x2=0, y2=0, a=0;
printf ("vvedite a=");
scanf ("5d", &a);
x2=x1+a;
y2=y1+a;
setfillstyle (SOLID_FILL, 3);
bar(x1, y1, x2, y2);
outtextxy (x1-10, y1, "1");
outtextxy(x1-10, y2, "2");
outtextxy (x2+10, y1, "3");
outtextxy (x2+10, y2, "4");
printf ("\n nagmite ili 1 ili 2 ili 3 ili 4");
a=getch();
if(a==49)
putpixel(x1, y1, 5);
if(a==50)
putpixel(x1, y2, 5);
if(a==51)
putpixel(x2, y1, 5 );
if (a==52)
putpixel(x2, y2, 5);
getch();}

Re: Вращение квадрата

Добавлено: 18 фев 2010, 22:19
rrrFer
можно попробовать почитать про афинные преобразования. Есть матрица вращения. Надо создать матрицу из координат вершин квадрата и умножать ее на матрицу вращения. В результате умножения получим новую матрицу из координат ввершин. Возможно надо поискать уже готовый код, вероятно он даже есть на алголисте.