Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Программирование вращения [Delphi, Windows]


Эдуард ©   (2002-12-17 05:11:00) 

Доброго времени суток!
Я создал хранитель экрана с вращающимися звездами (относительно некого начала координат). OpenGL и DirectX я не использовал. Проблема в том, что "звезды" не хотят вращаться равномерно относительно друг друга. Они то чуть ближе одна к другой, то чуть дальше. Т. е. передвигаются на некий угол неодновременно. Для расчета новой координаты "звезды" я использовал поочередно 2 алгоритма: расчитывал через радиальные координаты и через матрицу. По сути, они дают один и тот же результат.
Может, кто-нибудь знает что еще нужно сделать с координатами, чтобы "звезды" вращались плавно относительно друг друга, т.е. всегда были на одинаковом расстоянии друг от друга? Может здесь применяется какое-нибудь сглаживание?
Заранее благодарен в помощи.


zavdim   (2002-12-18 07:31:00) [1]

Ну не всю - но глянуть хочется, что ты имеешь в виду под разным расстоянием. Можно ехе. Только зажми.


zavdim   (2002-12-17 14:46:00) [2]

чего не жалко.
лучше всю прогу - не украду.


Эдуард   (2002-12-17 11:35:00) [3]

а что именно на мыло кинуть?


zavdim   (2002-12-17 11:27:00) [4]

нет - ну ты относительно центра экрана вращаещь.
формулы верные. k- это растяжка?
изменение расстояний небольшое - в пределах пикселя?
Можешь мне на мыло кинуть? - завтра гляну и отвечу.


Эдуард   (2002-12-17 10:55:00) [5]

beta[i]:=beta[i]+rad; //rad - некоторый угол приращения в радианах, соответсвует 1 градусу.

x[i]:=ro[i] * cos(beta[i]);
y[i]:=ro[i] * sin(beta[i]);

далее, вещественные x и y переводятся в экранные координаты.
у меня (начало координат в нижнем правом углу, там же и центр окружности, так что экран - четверть окружности), поэтому:
x_int:=Round((MaxX/2 + x[i] * k));
y_int:=Round((MaxY/2 - y[i] * k));//MaxX, MaxY - размеры экрана


zavdim   (2002-12-17 10:33:00) [6]

Покажи как вращал.


Наверх

Титульная страница Поиск, карта сайта Написать письмо