![]() |
Сбить машиной конус
Вложений: 1
Здравствуйте, предположим, что машина движется и поворачивает с максимальной скоростью, наматывая круги вокруг конуса. Как узнать на сколько нужно сбросить/увеличить скорость, что бы сбить конус. Пока не будем брать в расчет ускорение, так как я и сейчас даже не знаю с какого бока подступиться к проблеме.
|
А какие данные известны, скорость движения, координаты и угол поворота машины?
Можно сделать таким образом, написать скрипт который находит координаты и радиус круга по которому ездит машинка при заданных параметрах. А далее через цикл подогнать необходимые параметры, для сбития конуса. Скрипт для нахождения координат и радиуса окружности: Код AS3:
Манипулировать вы можете значениями: скорость, скорость разворота. |
Цитата:
|
Цитата:
Я не говорю что моё решение единственное и идеальное, наверняка можно вывести какую-то формулу, если посидеть и подумать подольше. Я описал вам один из путей возможного решения. Для подгонки нужных значений циклом понадобится от силы 10 итераций. Это абсолютно ничтожная нагрузка для одной машинки. Если-бы вам нужно было найти значения сразу для 300 зомби, вот тогда бы ещё стоило задуматься над производительностью. |
Циклом это более затратнее, чем формулой, да и точность будет меньше. Но я думаю если у вас будет одна машинка и несколько конусов, то нет вообще смысла об этом задумываться, что у вас там че-то тормозить будет или, что это "очень большая нагрузка".
|
Странный вы. Вот если бы я делал подобную игру, об оптимизации я бы задумывался в последнюю очередь.
Пусть для начала работает как надо. Пока оно действительно не затормаживает работу - всё в порядке. |
Пусть m - это изменение угла машинки за кадр, n - ваша частота кадров (к/с). Тогда выводимое на экран изменение скорости будет равно V-mn*((xмашинки - xконуса)2 + (yмашинки - yконуса)2)
Если что, то a2 - это a в квадрате. Скорость по идее измеряться должна в пикселях в секунду(пиксель/секунда). Может, я ошибаюсь. Необходимо создать условие для положительного значения выражения выше, при котором будет выводиться + перед изменением скорости (в случае с отрицательным и так будет минус) |
Я много почерпнул из этого видео http://youtu.be/7YwBNRuBvjw в частности формулу ω = vr Из нее нашел радиус окружности пути. Центр окружности нашел путем поворота вектора скорости на 90 градусов в строну поворота, нормализовал его, умножил на радиус окружности и прибавил позицию ТС. Хоть окружность и отражает проделываемый путь, но почему то она "гуляет" туда-суда.
https://www.youtube.com/watch?v=1p_4...ature=youtu.be Так и должно быть? Это какая то допустимая погрешность вычислений или просто баг? ТС точно движется по правильной траектории это именно позиция окружности шалит |
Вложений: 2
Всё верно найти радиус окружности, затем посчитать угловую скорость. Позиция шалит скорее всего потому что используешь дисплейные координаты, там точность 0.2 или потому что ты рисуешь окружность после того как посчитал положение машинки.
Код AS3:
|
Цитата:
то рано или поздно произойдет то, что на видео. И чем больше скорость вращения, тем быстрее будет ЭТО. Решение - постоянно пересчитывать. Добавлено через 4 минуты И ещё первым делом, при работе с вращением, нужно откинуть все понятия "динамичности". Точка сместилась, рассчитал радиус, сохранил и на его основе всегда пересчитываешь. А если радиус после каждого витка рассчитывать, то вот такой слет с орбиты и будет. |
| Часовой пояс GMT +4, время: 17:57. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.