![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Упростите пожалуйста формулу...
Ландграф Павел © (2005-04-10 20:37:00)Непомню где видел, но была такая формулка в исходниках (математик из меня как из Ельцина человек)
FAngle:=((Trunc(RadToDeg(ArcTan2(FNextY*32-FY,FNextX*32-FX)+202.5) div 45)*45)-180;
, где
FNextX, FNextY - следующая на пути клетка
FX, FY - координаты зверушки
Дык, вот, как енту формулу можно упростить до нормального вида, из-за погрешностей она иногда неправельно вычисляет угол, и анимация "скачет" (иногда)
Ландграф Павел (2005-04-11 20:09:00) [1]dRake> ну хорошо талантам как ты, все знаешь для чего...
dRake (2005-04-11 16:18:00) [2]2 Павел
>если б знать... не я же ее придумал=))
Вот это жесть :) Юзать формулы не зная что они делают..
Ландграф Павел (2005-04-11 16:07:00) [3]Ну вот это другое дело, спасибо!=)
MBo (2005-04-11 15:17:00) [4]IntFi:=45*Round(ArcTan2(Y-YCurrent,X-XCurrent)*4/Pi);
if IntFi=-180 then
IntFi:=180;
Ландграф Павел (2005-04-11 15:00:00) [5]=) требуется посчитать угол между зверушкой и следующей клеткой куда премся, получить результат в виде 0, 45, 90, 135, -135, -90, -45, -180 и поставить анимацию с нужным углом.
Ента формула именно это и делает, но видимо плохо=)
A22 (2005-04-11 14:49:00) [6]ты лучше объясни толком что требуется запрограммировать (отвлекись от формулы), так проще будет :)
Ландграф Павел (2005-04-11 13:52:00) [7]если б знать... не я же ее придумал=))
A22 (2005-04-11 11:26:00) [8]кхм... ничего не понял. если тебе угол между осью Х и прямой по точкам p1,p2, то это будет просто arctg(dy/dx). в программировании - atan2f(dy, dx). зачем там что-то умножать, делить нацело на 45, переводить в градусы и тут же умножать на 45... чего делается-то?
XProger (2005-04-11 00:54:00) [9]Скачет не из-за погрешности...