Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Движение объекта


Автор: DreLaZ 21.5.2008, 14:03
Есть Кнопка, её надо заставить двигаться с заданным углом по параболе и по прямой. Ну если одно из этих сделать, то второе аналогично). У меня есть мысль: надо изменять значение Top и Left через таймер. Типо такого:
Код

...
BitBtn1.Left:=round(BiTBtn1.Left*Sin(pi*N/180));  // sin или сos угла. N измеряется в градусах и             
                                                                               //    переводится в радианы.
...

Но какая-то фигня получается. Уже мозг парится.
пысы Не надо мне писать: читай факи, книги и тому подобное. Я пока учусьsmile
Помогите решить данную проблему...

Автор: Rodman 21.5.2008, 14:06
напомни как меняется Х и У в параболе!

Автор: DreLaZ 21.5.2008, 14:13
В параболе: x=V*Cos(A)*t
y=V*sin(A)*t-g*t*t/2
сюда же t=2*v*sin(A)/g

Автор: Rodman 21.5.2008, 14:47
будешь смеятся, но расшифруй А, g, V...

просто блин уже вылетела из головы вся геометрия! 

Автор: DreLaZ 21.5.2008, 14:52
A- это угол который пользователь будет задавать, и под которым будет лететь снаряд(кнопка)
g- const. g~9.8м/с в квадрате
V - это скорость тоже будет задаваться пользователем.
Мне  хотя бы узнать как сделать, чтобы у меня по заданному углу кнопка двигался в любые стороны.
т.е. стоит у меня буттон всередине формы, задав целое число в едите(угол) я подтверждаю, жму на другую  кнопку, и та кнопка начинается двигаться том направлении, под углом который я указал. Воть

Автор: DreLaZ 21.5.2008, 15:07
вот чесь придумал:
Код

procedure TForm1.Timer1Timer(Sender: TObject);
begin
BitBtn1.Left:=BitBtn1.Left+round(1*sin(pi*N/180));
BitBtn1.Top:=BitBtn1.Top+round(1*cos(pi*N/180));
end;

но я думаю, что тут раундом нельзя пользоваться так как округляет сильно. Пример: при  75 градусах движется как при 90. Что можете посоветовать в этом случае? smile 

Автор: Rodman 21.5.2008, 15:12
Цитата(DreLaZ @  21.5.2008,  15:07 Найти цитируемый пост)
раундом нельзя 

а без него никак! число не может быть вещественным!

Автор: DreLaZ 21.5.2008, 15:30
Я уже сам разобрался!)) Только надо 1 на 10 или больше изменить чтобы точность больше была. Так что проблема решена самим собойsmile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)