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

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

Поворот спрайта в сторону курсора (DelphiX) [Delphi, Windows]


Страницы:   1 2

KOT_BEGEMOT ©   (2005-09-19 23:07:00) 

Мне надо чтоб спрайт повернулся в сторону курсора... Я видел много исходников, но все они неточные, тоесть спрайт бывает смотрит левее указателя или правее... А мне бы точную формулу... Есть х, у курсора и х, у спрайта ПЛИЗ ПОМОГИТЕ!


OSokin   (2005-10-09 11:20:00) [1]

А я его изучал? Нет еще. Значит буду пользоваться тем, что знаю.


A22   (2005-10-04 12:23:00) [2]

я все никак не пойму, чем плох арктангенс? вышел из моды?..


OSokin   (2005-10-03 19:38:00) [3]

Линк не дам - не вышел еще выпуск. Ответ считается в  градусах, PiDiv2 - это заморочки с переводом. Вместо этого можно использовать RadToDeg


Zer0   (2005-10-01 17:55:00) [4]

[30] OSokin ©
принимать апстенуголовой наружно до просветления


Servelat   (2005-10-01 13:14:00) [5]

2 Осокин
А где линк на статью? Не особо понятно, в чем выдается ответ (видимо в количествах пи-пололам поместившихся в нужном угле)?
Вообще ИМХО лучше арктангенс юзать, там тебе не надо лишних рассчетов производить, оба катета известны (X и Y), а так твое Sqrt((X * X + Y * Y)) вычисляется довольно долго.


oO   (2005-09-29 20:10:00) [6]

> OSokin ©   (29.09.05 18:35) [30]
божественно!


OSokin   (2005-09-29 18:36:00) [7]

Это из моей новой статьи. Переодически отправляю на исходники.ру


OSokin   (2005-09-29 18:35:00) [8]

function GetAngle(X, Y: Real): Real;
begin
 GetAngle := -(ArcSin(X / Sqrt((X * X + Y * Y))))) / PiDiv2;
end;

Следует отметить, что точка должна находиться относительно центра координат в (0;0). Таким образом, для получения угла между точками нужно подставить значения X-X0, Y-Y0.


Петр   (2005-09-26 01:33:00) [9]

блин ну неужели всё так сложно..
это ж геометрия из начальной школы..

я так понимаю что для поворота спрайта в DelphiX используется угол из 256 градусов :) Ну вот, вычисляешь угол, запоминаешь его в какую-нибудь переменную типа Double например. преобразовываешь к byte, запоминаешь в другую переменную.

для перемещения используешь вещественную, для поворота - типа byte.
и усё!


KOT_BEGEMOT   (2005-09-26 01:22:00) [10]

АП! )))


KOT_BEGEMOT   (2005-09-24 00:38:00) [11]

П7, мож мне на мыло исходник кинуть если есть?


KOT_BEGEMOT   (2005-09-24 00:20:00) [12]


> Как вариант хранить single-угол и byte-угол. Расчёты вести
> по первому, а рисовать по второму!


эта как?


П7   (2005-09-24 00:02:00) [13]

Ещё бы он точно летел, при целомзначении угла, да ещё и урезанном до 256 значений.
Как вариант хранить single-угол и byte-угол. Расчёты вести по первому, а рисовать по второму!


KOT_BEGEMOT   (2005-09-23 21:36:00) [14]

>Может, недостаточно точно вычисляется угол. Может попробовать >запоминать точку назначения для твоего спрайта и рассчитывать угол >заново на каждом шаге?
а это, кстати, идея! нада попробовать


ПЁС_ПЫЛЕСОС   (2005-09-23 21:00:00) [15]


> но пробовал все примеры, все работают, но там спрайт по-
> прежнему не точно летит(((((((


Может, недостаточно точно вычисляется угол. Может попробовать запоминать точку назначения для твоего спрайта и рассчитывать угол заново на каждом шаге?


KOT_BEGEMOT   (2005-09-23 19:39:00) [16]

2 Zer0
очень хочу! Знал бы ты как хочу!

но пробовал все примеры, все работают, но там спрайт по-прежнему не точно летит(((((((

скиньте плиз кто-то исходник на:
iradchenko@bigmir.net


Zer0   (2005-09-23 19:09:00) [17]

типа сам разобраться не хочешь?


KOT_BEGEMOT   (2005-09-23 08:09:00) [18]

Плиз, дайте свое мыло, я скину исходник, может кто-то что-то исправит


KOT_BEGEMOT   (2005-09-22 22:58:00) [19]

Все равно летит по-разному. Все примеры пробовал. Все работали, но спрайт летел не точно в ту сторону куда надо((( постоянно косил то вправо, то влево(((((


KOT_BEGEMOT   (2005-09-21 16:09:00) [20]

А чтоб спрайт двигался к курсору пойдет такая формула?:

gox:=3*cos((angle+64)*pi/128);
goy:=3*sin((angle+64)*pi/128);
x:=x+gox;
y:=y+goy;


Страницы:   1 2

Наверх

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