![]() |
|
![]() ![]() ![]() |
|
Fantaz1 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 16.1.2009 Репутация: нет Всего: нет |
Помогите решить проблему!
Я пишу 2д игру, вид сбоку. И сейчас хочу реализовать такую фишку, что б при нажатии на кнопку мыши с персонажа (координаты X0, Y0) вылетала пуля и летела по направлению места нажатия кнопки мыши (X1,Y1) То есть у нас есть прямая построенная на двух точках. Вопрос: как и по каким формулам можно изменять нашу пулю(X0,Y0) что б она летела равномерно к (X1,Y1)? Как определить величины которые мы должны прибавлять к нашим X0,Y0 к примеру каждую миллисекунду?? |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
уравнение прямой |
|||
|
||||
Fantaz1 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 16.1.2009 Репутация: нет Всего: нет |
и шо дальше? там нету ответа на мой вопрос!! Уравнения прямой я и так знаю, я не про это спрашивал!
Это сообщение отредактировал(а) Fantaz1 - 22.6.2011, 19:45 |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
||||
|
||||
Fantaz1 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 16.1.2009 Репутация: нет Всего: нет |
Это не ответ! И что дальше делать с этим уравнением прямой? подставлять все числа и проверять подходят ли они этому уравнению?
Вопрос вот: как изменять координаты пули? |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
Fantaz1
Ты хоть прочитал по ссылке прежде чем отвечать?
подставляешь циклом значения для x в интервале между x0 и x1, считаешь y и получаешь координаты. |
|||
|
||||
Fantaz1 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 16.1.2009 Репутация: нет Всего: нет |
Я не настолько туп, я ищу нормальный алгоритм решения чем этот, тупой перебор чисел я не считаю за решение.
Вот я и спрашивал есть ли какие то формулы или законы по которым изменяются координаты по прямой! Вот на другом форуме мне и ответили то что я хотел: Зависимость координат пули от времени (v - это заданная скорость) ![]() Это сообщение отредактировал(а) Fantaz1 - 22.6.2011, 20:29 |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 7 Всего: 183 |
Тебе ответили ровно то же самое... Это обобщенное уравнение прямой, абсолютно эквивалентное тому, что написал azesmcar.
И t - совсем не время, а параметр длины прямой. Впрочем, можно и как время трактовать, да хоть как ежиков, стоящих вдоль прямой.
Может и не туп, но с матчастью явные пробелы. Никакого тупого перебора тебе и не предлагали. Кто же виноват, что ты не понял. Хорошо, что на другом форуме тебе объяснили лучше. Кстати, ты действительно угол собираешься вычислять? Все эти арктангенсы применять? -------------------- ... |
|||
|
||||
Fantaz1 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 16.1.2009 Репутация: нет Всего: нет |
До ответа дошел сам. Оказывается он был до безобразия прост..) И не надо не каких формул и прямых.
- Нахожу координаты вектора движения пули (X1-X0;Y1-Y0). - Делю его на его длину. Получаю единичный вектор. - А потом постоянно его прибавляю к координате пули. И пуля движется в ту сторону которую надо) |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
||||
|
||||
Fantaz1 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 16.1.2009 Репутация: нет Всего: нет |
||||
|
||||
baldina |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 4 Всего: 101 |
потому что накапливается погрешность.
если надо пройти отрезок (a,b) с шагом dx (для простоты положим, что (b-a) кратно dx), есть два способа:
и
второй способ предпочтительнее, т.к. в нем не используется предыдущее значение, и погрешность невелика и постоянна --- что касается Вашей задачи, имхо удобнее представить её в виде линейной интерполяции c параметром t, изменяемом от 0 до 1:
формула a*(1.0-t) + b*t суть уравнение прямой в параметрическом виде, где a и b - точки концов отрезка, задающего прямую т.е. фрагмент программы может быть примерно такой:
Это сообщение отредактировал(а) baldina - 23.6.2011, 14:56 |
||||||||
|
|||||||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Eще и потому плохой, что на каждом шаге надо проверять, а не встречена ли цель. При этом в подавляющем большинстве случаев конец очередного отрезка будет заканчиваться ЗА целью и придется отсчтитывать назад. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |