Показать сообщение отдельно

  #1902  
Старый 24.11.2008, 12:27
LuX0R
Новичок
Регистрация: 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 кадров в сек.
	}
...
В пункте (*) можно соответственно приплюсовать ровнение кординат, т.е. где именно будет центр окружности. Можно еще сделать через уравнение окружности. Соответственно и для трехмерных обьектов, только нужно использовать уровнение элипса.
 
Ответить с цитированием