Показать сообщение отдельно
  #8  
Старый 14.03.2016, 21:04
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

А теперь глупый вариант. Без физических движков и пр.
1) Точка двигается по горизонтали (ось X) с некоторой V = X пикс/кадр = const. Относительно небольшой
2) После перемещения по X смотрим, находится ли точка выше или ниже линии. Вычисляем dY между новым положением точки и линией в этой координате по X - примерное изменение высоты на "пройденном" участке.
3) X пересчитывается в соответствии с dY.
4) По оси Y точка ставится на линию согласно новой позиции X.

Логично, что к примеру при подъеме в гору, новое изменение X должно быть меньше X^2/sqrt(X^2 + dY^2) (обозначим A), а при спуске с горы - больше этого значения. Поэтому можно считать новое значение на подъёме, например, как A / (1+y/x). А на спуске 2A - (A / (1+y/x)). Конечно, формулы для примера почти с потолка, как и задание. Однако я думаю, выглядеть будет плюс-минус терпимо.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием