физика для мячика(VS 2005 )
Как запрограммировать физику (скорость, высота, ускорение) при ударе по мячу ?
а конкретнее можешь сказать какая задача перед тобой стоит?
или же он тупо падает сверху вниз?
Цитата: DissDoc
По мячу бьют? (ну может типа футбола)
или же он тупо падает сверху вниз?
или же он тупо падает сверху вниз?
Типа гольфа:). Мяч стоит где-то на поле. Рядом клюшка. После нажатия на левую кнопку мыши начинает заполняться шкала, которая определяет силу удара. Как тока отпускаем кнопку - удар с той силой, которая была на шкале. Сообствено нужно расчитать поведение мяча после удара с определенной силой (скорость, ускорение (в нашем случае замедление, будем считать что мяч сразу после удара набирает макс. скорость), и высоту полета). пишу через win32api на visual studio с++ 2005
x = x0 + vx0*t,
y = y0 + vy0*t,
z = z0 - vz0*t + g*t*t/2,
где x0, y0, z0 - начальные координаты,
vx0, vy0 - горизонтальные составляющие начальной скорости (т. е. проекция начальной скорости на оси и Ox Oy),
vz0 - вертикальная составляющая начальной скорости,
g - ускорение свободного падения (9,8 м/с2).
Если предполагается, что земля плоская (без горок), и удар произведен с поверхности земли, то целесообразно заменить z0 на 0, и 3-е уравнение упрощается.
Если известно абсолютное значение начальной скорости v0, угол alpha относительно нормали к поверхности земли, т. е. к вертикали), а также угол phi удара, относительно, скажем, оси Ox (см. рисунок), то
vx0 = v0 * cos (phi) * sin (alpha),
vy0 = v0 * sin (phi) * sin (alpha),
vz0 = v0 * cos (alpha). Альфу, как мы писали выше, мы полагаем константной (хотя и необязательно).
z в этих уравнениях измеряется сверху вниз (ось направлена вниз). Если нужно наоборот, то z = z0 + zy0*t - g*t*t/2.
Если нужно учитывать влияние ветра (ветер, наверное, строго горизонтальный?), можно поступить так (несколько упрощенно, но, думаю, вполне достаточно): в первые два уравнения ввести тоже ускорение, напрямую зависящее от силы ветра.
x = x0 + vx0*t + ax*t*t/2,
y = y0 + vy0*t + ay*t*t/2,
где ax, ay - компоненты ускорения вдоль осей Ox и Oy. Если известно направление ветра (точнее, как на рисунке, угол psi между направлением ветра и осью Ox), и абсолютное значение ускорения a, то
ax = a * cos (psi),
ay = a * sin (psi).
Исходя из этих уравнений (а точнее, только из 3-го), можно найти время, когда мяч столкнется с землей, после чего он (по крайней мере, в настоящем гольфе) должен какое-то время катиться по земле.
Момент столкновения с землей определяется из уравнения vz0*t - g*t*t/2 = 0, т. е. vz0 = g*t/2, откуда
tp = 2*vz0 / g,
где tp - время приземления.
Тогда можно определить составляющие скорости по x и y в момент приземления, исходя из уравнений vx = vx0 + ax*t и vy = vy0 + ay*t:
vxp = vx0 + ax*tp,
vyp = vy0 + ay*tp,
где vxp, vyp - составляющие скорости в момент приземления.
Дальнейшие расчеты (после приземления) зависят от того, полагаем поверхность земли ровной или с горками, пренебрегаем ли ветром при качении шарика по земле, происходит ли некоторое гашение горизонтальных составляющих скорости из-за удара о землю и др.
спасибо
Я ж тебе послал личное сообщение - ты что не читаешь их ? Ладно, повторю еще раз тут : хочешь сказать спасибо cheburator используй репутацию( она для этого и существует ), а постить СПАСИБО в разделе не надо.
Да не стоит, я по сути просто процитировал парочку школьных учебников :)