Страница 1 из 1

Физика в Unity - обратный расчет параболы

СообщениеДобавлено: 27 фев 2012, 20:33
mDmitriy
Не пинайте строго, плиз... может, вопрос и тривиальный, но ответа пока не нашел...
можно ли в Unity сделать обратный расчет для параболы?
допустим, имеем мы на плоскости точку А, вектор (определяющий угол направления вектора скорости к нормали) и начальную скорость: можем запустить некоторое тело в полет и оно прилетит в точку В.
Вопрос - можно ли решить обратную задачу?
т.е., зная координаты точек А и В, найти необходимую скорость при заданном угле... или угол при заданной скорости...
конечная задача - найти вектор скорости (величину и направление) для заданных начальной и конечной координат и максимальной высоты полета.
в школьной физике эта задача решается однозначно, а можно ее решить в Unity программным путем?

Re: Физика в Unity - обратный расчет параболы

СообщениеДобавлено: 27 фев 2012, 22:35
Neodrop
Не правильная постановка вопроса. Не "можно ли в Unity", а "можно ли в .NET"
Ответ - да, конечно же можно. Это же просто алгоритм. Формула. Как миллионы других математических задач, которые каждый день решает ваш числогрыз.

Re: Физика в Unity - обратный расчет параболы

СообщениеДобавлено: 27 фев 2012, 23:59
DbIMok
видимо речь о том, насколько встроенная физика соответствует ожиданиям. имхо нужно взять и попробовать.

Re: Физика в Unity - обратный расчет параболы

СообщениеДобавлено: 28 фев 2012, 00:48
mDmitriy
Neodrop писал(а):Не правильная постановка вопроса. Не "можно ли в Unity", а "можно ли в .NET"
Ответ - да, конечно же можно. Это же просто алгоритм. Формула. Как миллионы других математических задач, которые каждый день решает ваш числогрыз.

э-э... я, в общем, немного представляю себе как компьютер решает математические задачи, теорию информации, возможности .NET и пр.
попробую переформулировать вопрос:

есть на поверхности сцены некоторый объект OtherGo, который подчиняется законам физики... он неподвижен в координатах (0, 0, 0)
в скрипте написано (очень упрощенно), допустим:

Синтаксис:
Используется csharp
OtherGo.gameObject.rigidbody.velocity = Vector3.zero
OtherGo.rigidbody.AddForce(Settings.Direction * Settings.Velocity, ForceMode.Impulse);
 

как вычислить координаты точек падения и максимальной высоты (сопротивлением среды пренебрегаем), зная значения параметров функции?
именно вычислить, а не получить их экспериментально...

ну и далее... имея координаты начальной и конечной точки, можно получить бесконечно много вариантов пар значений <угол (направленный вектор), начальная скорость>, описывающих траекторию полета по параболе между этими точками... зная координаты максимальной высоты, можно получить единственное решение...
т.е., в реальной физике для параболы, по которой летит тело, можно по трем точкам рассчитать угол и начальную скорость.
вопрос - как рассчитать эти параметры для Unity, чтобы подставить их в вышеприведенную функцию?

Re: Физика в Unity - обратный расчет параболы

СообщениеДобавлено: 28 фев 2012, 00:57
mDmitriy
DbIMok писал(а):видимо речь о том, насколько встроенная физика соответствует ожиданиям. имхо нужно взять и попробовать.

перед тем как пробовать, хотелось бы выяснить у знающих людей, эта задача в принципе решаема в рамках физики Unity или нет?
моделировать параболу по точкам очень не хочется... :-l

Re: Физика в Unity - обратный расчет параболы

СообщениеДобавлено: 28 фев 2012, 02:33
DbIMok
т.е. для того, чтобы написать пару строчек, вам нужно подтверждение?
скорость: 70.71 угол: 45
планируемая/реальная высота: 127.421/126.9208
планируемая/реальная дальность: 509.684/508
думаю результаты говорят о том, что встроенной физике можно доверять.
"моделировать параболу" - звучит круто! в чем проблема считать х(t),y(t) по известным формулам?

Re: Физика в Unity - обратный расчет параболы

СообщениеДобавлено: 28 фев 2012, 11:21
mDmitriy
DbIMok писал(а):т.е. для того, чтобы написать пару строчек, вам нужно подтверждение?
скорость: 70.71 угол: 45
планируемая/реальная высота: 127.421/126.9208
планируемая/реальная дальность: 509.684/508
думаю результаты говорят о том, что встроенной физике можно доверять.

большое спасибо :-bd
"моделировать параболу" - звучит круто! в чем проблема считать х(t),y(t) по известным формулам?

ну, если бы не сработала физика Unity, был вариант считать перемещение по точкам по известным формулам самому...
но теперь я знаю, что все работает :)