![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Программирование вращения [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]Покажи как вращал.