Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

физика для мячика(VS 2005 )

18K
23 ноября 2007 года
af1x
31 / / 19.11.2007
Как запрограммировать физику (скорость, высота, ускорение) при ударе по мячу ?
257
23 ноября 2007 года
kosfiz
1.6K / / 18.09.2005
а конкретнее можешь сказать какая задача перед тобой стоит?
249
23 ноября 2007 года
DissDoc
639 / / 01.10.2004
По мячу бьют? (ну может типа футбола)
или же он тупо падает сверху вниз?
18K
23 ноября 2007 года
af1x
31 / / 19.11.2007
Цитата: DissDoc
По мячу бьют? (ну может типа футбола)
или же он тупо падает сверху вниз?



Типа гольфа:). Мяч стоит где-то на поле. Рядом клюшка. После нажатия на левую кнопку мыши начинает заполняться шкала, которая определяет силу удара. Как тока отпускаем кнопку - удар с той силой, которая была на шкале. Сообствено нужно расчитать поведение мяча после удара с определенной силой (скорость, ускорение (в нашем случае замедление, будем считать что мяч сразу после удара набирает макс. скорость), и высоту полета). пишу через win32api на visual studio с++ 2005

350
23 ноября 2007 года
cheburator
589 / / 01.06.2006
Вместо силы удара используем понятие начальной скорости. Можно пренебречь трением о воздух и считать угол к горизонту, под которым мяч вылетел, всегда одним и тем же. Тогда уравнения достаточно простые:
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 - составляющие скорости в момент приземления.
Дальнейшие расчеты (после приземления) зависят от того, полагаем поверхность земли ровной или с горками, пренебрегаем ли ветром при качении шарика по земле, происходит ли некоторое гашение горизонтальных составляющих скорости из-за удара о землю и др.
18K
24 ноября 2007 года
af1x
31 / / 19.11.2007
спасибо
320
24 ноября 2007 года
m_Valery
1.0K / / 08.01.2007
Я ж тебе послал личное сообщение - ты что не читаешь их ? Ладно, повторю еще раз тут : хочешь сказать спасибо cheburator используй репутацию( она для этого и существует ), а постить СПАСИБО в разделе не надо.
350
26 ноября 2007 года
cheburator
589 / / 01.06.2006
Да не стоит, я по сути просто процитировал парочку школьных учебников :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог