
24.11.2008, 12:27
|
|
Новичок
Регистрация: 18.11.2008
Сообщений: 5
С нами:
9199203
Репутация:
0
|
|
Математика в руки! Пишу первое что пришло в голову, это выразить координаты точек через sin и cos.
x = R cos a
y = R sin a
Код:
...
#include <math.h>
...
/* убейте но не помню навскидку как называеться структура, вроде как Point, но не буду врать, потому определю для примера*/
struct cord
{
int x;
int y;
}cord;
...
cord RotateCordinate(int R, float a) // радиуc окружности вращения, угол
{
cord Cordinate;
Cordinate.x = cos(a)*R;
Cordinate.y = sin(a)*R;
return Cordinate;
}
...
// собсно твой код
float Alpha = 0; // угол
int R; // радиус = половине длинны диагонали твоего прямоугольника
cord Rectangle_1, Rectangle_2; // твои координаты
while(...) // не знаю, для чего тебе нужно, потому условие выхода если нужно определишь сам
{
Clear(); // очищаем поле для рисования
Rectangle_1 = RotateCordinate(R, Alpha);
Rectangle_2 = RotateCordinate(R, Alpha+180); // для противоположной координаты +180 градусов
Rect(Rectangle_1.x, Rectangle_1.y, Rectangle_2.x, Rectangle_2.y); // (*)
Alpha += 0,01; // смещаем угол
delay(40); // примерная скорость 25 кадров в сек.
}
...
В пункте (*) можно соответственно приплюсовать ровнение кординат, т.е. где именно будет центр окружности. Можно еще сделать через уравнение окружности. Соответственно и для трехмерных обьектов, только нужно использовать уровнение элипса.
|
|
|