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

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

Геометрия на плоскости [Delphi, Windows]


ПсихЪ_копия ©   (2004-07-11 16:48:00) 

Что я не правильно делаю:

     dX := abs( Cos( 2*Angel )*step );
     if X > eX then
       X := X-dX
     else
       X := X+dX;

     dY := abs( Sin( Angel )*step );
     if Y > eY then
       Y := Y-dY
     else
       Y := Y+dY;
// Angel - угол в градусах
// X, Y - положение объекта
// eX, eY - конечные положения объекта
// step - шаг "по гипотенузе" до (eX;eY)
// dX, dY - смещение по X и Y соответственно за каждый проход


Вроде бы все тригонометрические правила соблюдены. Может нужно в радинанах угол писать, но тоже не помогает. Объект движется с непонятными мне dX и dY но в нужную сторону. Обычно вместо того, чтобы плавно идти прямо до точки (eX;eY) он движется быстрее к одной из координат, а затем в несколько раз медленнее движется по прямой к конечной точке.

Может я чего-то не учёл?


ПсихЪ_копия   (2004-07-11 16:50:00) [1]

Простите, код немного не тот - эксперименты мои... (: Вот:

    dX := abs( Cos( Angel )*step );
    if X > eX then
      X := X-dX
    else
      X := X+dX;

    dY := abs( Sin( Angel )*step );
    if Y > eY then
      Y := Y-dY
    else
      Y := Y+dY;


Наверх

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