Найдите угол отскока шарика при угле падения 30° на идеально гладкую поверхность, если при ударе шарик теряет половину кинетической энергии. Угол падения — это угол между нормалью к поверхности и траекторией шарика.
Спрятать решение
Решение.
При падении на гладкую поверхность тангенциальная составляющая импульса coхраняется, и потери энергии при неупругой деформации сопровождаются изменением нормальной составляющей импульса: где индексами x и y обозначены тангенциальная и нормальная составляющие скорости (см. рис).
Выразим
Отсюда тогда следовательно,
Ответ: угол отскока шарика равен
Классификатор: Механика. Закон сохранения энергии в неконс. системах
Приветствую всех, сегодня мы создадим метод который позволят рассчитать угол отскока шарика от стены. Этот метод используется часто в игровых движках. Опять же нам потребуется формула для нахождения направления шара при отскоке от стены. y = 2b — a; Но не будем терять время и приступим к рассмотрению метода:
public static double BounceWall(double directionRadians, double wallInclinationRadians) { double result = (2 * wallInclinationRadians) – directionRadians; return result; } |
Да, да он всего лишь в одну строчку, но его универсальность можно применить во многих играх 🙂
0 / 0 / 0 Регистрация: 08.07.2017 Сообщений: 11 |
|
1 |
|
Расчета угла отскока шарика от стены30.07.2017, 18:08. Показов 24799. Ответов 4
Нужно реализовать метод для расчета угла отскока шарика от стены. Считайте, что угол падения равен углу отражения, то есть можно пренебречь всеми физическими эффектами, связанными с кручением шаров, трением шара об стенку и т.п.
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
30.07.2017, 18:08 |
Ответы с готовыми решениями: Интересует расчет угла отскока шарика от горизонтальных, вертикальных и произвольных стен Определить угол отскока шарика от преграды Вычисление угла отскока теннисного мяча Формула для расчёта угасания (затухания или ослабления) радиосигнала через стены, двери, окна. 4 |
201 / 119 / 85 Регистрация: 15.12.2016 Сообщений: 235 |
|
30.07.2017, 21:02 |
2 |
Если пренебрегая всякими физическими эффектами, то формула простая:
1 |
201 / 119 / 85 Регистрация: 15.12.2016 Сообщений: 235 |
|
30.07.2017, 21:07 |
3 |
Недеюсь, это то, что нужно Миниатюры
1 |
0 / 0 / 0 Регистрация: 08.07.2017 Сообщений: 11 |
|
30.07.2017, 23:10 [ТС] |
4 |
похоже на правду, спасибо
0 |
novac_33 2 / 2 / 0 Регистрация: 26.04.2016 Сообщений: 42 |
||||
06.04.2018, 11:23 |
5 |
|||
Вдруг кому понадобится
2 |
Как рассчитать угол отскока?
Я немного поиграл с этим, но просто не могу понять.
Я сделал танк, который запускает ракеты, и когда ракеты попадают в стены, я хочу, чтобы они отскакивали, но я хочу, чтобы они отскакивали под прямым углом.
Сейчас у меня нет никаких препятствий, ракеты просто отскакивают, когда они выходят за пределы viewportRectangle
Я сделал.
Является ли решение, которое я ищу, достаточно продвинутым?
Есть ли относительно простой способ сделать это?
2009-02-21 14:11
9
ответов
Решение
Я думаю, что более простой способ сделать это – использовать скорость ракеты вместо вычисления углов. Скажем, у вас есть ракета, которая имеет xVelocity
а также yVelocity
представлять его движение по горизонтали и вертикали. Эти скорости могут быть положительными или отрицательными для представления влево, вправо, вверх или вниз.
- Если ракета попадает на верхнюю или нижнюю границу, поменяйте знак
yVelocity
, - Если ракета попадает в левую или правую границу, поменяйте знак
xVelocity
,
Это сохранит движение в противоположной оси одинаковым.
Заимствуя изображение из ответа ChrisF, скажем, ракета стартует в положении I.
С xVelocity
а также yVelocity
оба положительных (в 2D графике правое и нижнее, как правило, положительное) ракета будет двигаться в указанном направлении. Давайте просто назначим значения
xVelocity = 3
yVelocity = 4
Когда ракета попадает в стену в положении C, ее xVelocity
не должен меняться, но его yVelocity
следует повернуть на -4, чтобы он двигался назад в направлении вверх, но продолжал двигаться вправо.
Преимущество этого метода в том, что вам нужно только отслеживать ракеты xPosition
, yPosition
, xVelocity
, а также yVelocity
, Используя только эти четыре компонента и частоту обновления вашей игры, ракета всегда будет перерисовываться в правильном положении. Как только вы столкнетесь с более сложными препятствиями, которые не находятся под прямыми углами или движутся, работать со скоростями X и Y будет намного проще, чем с углами.
user1288
21 фев ’09 в 14:25
2009-02-21 14:25
2009-02-21 14:25
Вы можете подумать, что из-за того, что ваши стены выровнены по осям координат, имеет смысл написать код специального случая (для вертикальной стены отрицание координаты скорости X, для горизонтальной стены отрицание координаты скорости Y).). Тем не менее, как только у вас получится хорошо работать с вертикальными и горизонтальными стенами, возможно, вы подумаете следующее: “А как насчет стен под произвольными углами?” Так что стоит подумать об общем случае с самого начала.
В общем случае предположим, что ваша ракета имеет скорость v и поражает стену с нормалью поверхности n.
Разбейте v на компоненты u перпендикулярно стене и параллельно ей.
Куда:
u = (v · n / n · n) n
W = V – U
Здесь v · n – скалярное произведение векторов v и n. Смотрите ссылку для объяснения того, как его вычислить. Точечное произведение n · n оценивается как квадрат длины нормального вектора; если вы всегда сохраняете свои нормали в форме единичных векторов, тогда n · n = 1, и вы можете опустить деление.
После отскока на компонент движения, параллельного стене, влияет трение f, а на компонент, перпендикулярный стене, влияет упругость, которая может быть задана в виде коэффициента восстановления r.
Таким образом, скорость после столкновения равна v ′ = f w – r u. В perfectly идеально упругом, без трения столкновении, v ′ = w – u; то есть движение отражается относительно нормали в точке столкновения, как на диаграмме, приведенной в ответе Билла.
Этот подход работает одинаково и в трех измерениях.
(Очевидно, это очень упрощенное понятие подпрыгивания; оно не учитывает момент импульса или деформацию. Но для многих видов видеоигр такого рода упрощение вполне подходит.)
user68063
21 фев ’09 в 15:17
2009-02-21 15:17
2009-02-21 15:17
Для идеальных частиц (и света) угол отражения равен углу падения, как показано на этой диаграмме (из commons.wikimedia.org).
Сделайте поиск по “углу отражения” (без кавычек) в Google.
Это немного сложнее, если принять во внимание упругость и материал объекта и препятствий;)
user59303
21 фев ’09 в 14:18
2009-02-21 14:18
2009-02-21 14:18
У меня была эта проблема, единственный путь, который я нашел, это разделение осей столкновения!
Попытайся:
x += velocity * Math.cos(angle * Math.PI /180);
y += velocity * Math.sin(angle * Math.PI /180);
if (x < 0 || x > canvas.width) {
angle = 180 - angle;
}
else if (y < 0 ||y > canvas.height) {
angle = 360 - angle;
}
Я надеюсь, это поможет вам!
2015-06-18 01:43
В дополнение к конкретному физическому вопросу, который вы задаете, я бы порекомендовал книгу “Начало математики и физики для игровых программистов” Венди Шталер. Я нашел это весьма полезным для моих проектов программирования игры / физики.
Код, сопровождающий книгу, – это C++, но если вы знаете C#, преобразование будет довольно легко выполнить.
Хорошего вам!
user7862
21 фев ’09 в 15:51
2009-02-21 15:51
2009-02-21 15:51
180-а не будет работать во всех случаях, если только вы не выполняете отскок на верхней поверхности, когда X увеличивается.
Одно из направлений – форумы XNA или примеры кода XNA. Это C# и он предназначен для создания игр. Я не утверждаю, что вы хотите создавать свои игры в XNA, но это отличный инструмент, и он бесплатный.
user68725
21 фев ’09 в 14:27
2009-02-21 14:27
2009-02-21 14:27
Совсем не сложно – псевдокод:
angleObjectHitWall = a;
bounceAngle = 180-a;
Конечно, это очень простой расчет, и он совершенно не имеет значения, если вы начнете принимать во внимание такие факторы, как материал, гравитация, стены, которые не являются прямыми и т. Д.
user24545
21 фев ’09 в 14:14
2009-02-21 14:14
2009-02-21 14:14
a = 2w - b
где:
a => результирующий угол
w => угол стены, пола или потолка
b => угол шара
Это то, что я придумал, после попытки найти простейшую формулу для вычисления только результирующего угла падения мяча от стен, потолка и пола. Результат может выйти за пределы +360 или -360 градусов, но это все равно эквивалентный угол.
Например, если угол потолка составляет 270 градусов, а угол шара – 30 градусов, результирующий угол составит 510 градусов, что эквивалентно +150 или -210 градусов. Если вы будете использовать потолок 90 градусов вместо 270 градусов, результат все равно будет 150 градусов.
2020-10-19 07:37
Это действительно физический вопрос, поэтому, если вы не физик (и поскольку вы задаете этот вопрос, я пойму, что это не так), вам потребуется много чтения и мозгового штурма, чтобы понять это правильно.
Я предлагаю прочитать эту статью в Википедии, чтобы получить представление о глубине вашего вопроса.
Если вы только хотите, чтобы это выглядело “правдоподобно”, я бы не стал слишком беспокоиться об этом и воспользовался бы ответом Билла Ящерицы, однако, если вы хотите все исправить, у вас будет настоящее приключение. Пусть это тебя не пугает! Удачи!
user55377
21 фев ’09 в 14:45
2009-02-21 14:45
2009-02-21 14:45
if(!Collide(Missle, Mainchar)){
(Velocity.x)*-1;
(Velocity.y)*-1;
}
Это работает и просто, удачи.
2015-07-08 21:18
2017-10-05
Под каким углом отскакивает футбольный мяч от стенки?
Решение:
рис.1
рис.2
рис.3
рис.4
рис.5
Задача, разумеется, тривиальная, если считать, что удар абсолютно упругий, а стенка и мяч идеально гладкие. Тогда трение между мячом и поверхностью стенки отсутствует и угол отражения $beta$ равен углу падения $alpha$ (рис. 1).
Совсем иначе обстоит дело, если мяч и стенка шероховатые, так что пренебрегать трением уже нельзя. Однако и в этом случае легко найти угол отражения, если известен коэффициент трения р мяча о поверхность стенки.
Будем рассуждать следующим образом. Разложим вектор скорости поступательного движения мяча до удара $vec{v}$ на две составляющие: $vec{v}_{perp}$, направленную перпендикулярно поверхности стенки, и $vec{v}_{ parallel}$ направленную вдоль поверхности (рис. 2). Обозначим соответствующие скорости мяча после отскока через $vec{v}_{ perp}^{ prime}$ и $vec{v}_{ parallel}^{ prime}$. Перпендикулярная составляющая скорости мяча при ударе о стенку меняет свое направление на противоположное, оставаясь неизменной по модулю. Параллельная же составляющая скорости, вообще говоря, изменяется по модулю.
Чтобы убедиться в этом, рассмотрим силы, действующие па мяч со стороны стенки при ударе (рис. 3). Направленная но нормали к стенке сила $vec{N}$ — это сила упругости, возникающая при деформации мяча. Деформацию хорошо накачанного мяча можно считать упругой, после удара мяч восстанавливает свою форму. Поэтому энергия упругой деформации мяча после удара снова перейдет в кинетическую энергию.
Другими словами, часть кинетической энергии мяча, связанная с его движением по нормали к стенке, остается неизменной.
Изменение составляющей скорости, параллельной поверхности, происходит под действием силы трения. Эта сила направлена в сторону, противоположную скорости точек поверхности мяча в месте соприкосновения со стенкой. Если мяч до удара не вращался, то скорости этих точек равны $vec{v}_{ parallel}$, и действие силы трения приводит к уменьшению модуля $vec{v}_{ parallel}$. Это значит, что угол отражения $beta$ меньше угла падения $alpha$. Именно этот случай и изображен на рис. 1 и 2. Сила трения может и увеличивать значение $v_{ parallel}$, если до удара о стенку мяч вращался в направлении, указанном на рис. 4. При достаточно быстром вращении мяча ( $omega R > v_{ parallel}$) касающиеся стенки точки мяча имеют скорости, направленные влево, сила трения направлена вправо и значение $v_{ parallel}$ возрастает. В этом случае угол отражения больше угла падения.
Рассмотрим подробно случай, когда мяч до удара не вращается. Будем также считать, что скорости точек мяча, касающихся стенки, не обращаются в нуль: в течение удара проскальзывание не прекращается. Сила $vec{N}$ (рис. 3) возникает в момент соприкосновения мяча со стенкой, затем растет, достигая наибольшего значения в момент максимальной деформации мяча, а затем убывает до нуля. Сила трения скольжения $vec{F}_{тр}$ в течение удара также не остается постоянной. В любой момент времени модули сил $vec{F}_{тр}$ и $ vec{N}$ связаны законом Кулона — Амонтона:
$F_{тр} = mu N$. (1)
Поэтому в течение всего удара полная сила $vec{Q}$, с которой поверхность стенки действует на мяч, изменяется по модулю, но остается неизменной по направлению, образуя угол $gamma$ с нормалью к стенке. Как видно из рис. 3, $tg gamma = mu$. Это позволяет найти угол отражения мяча $beta$.
На основании второго закона Ньютона изменение импульса мяча при ударе о стенку $Delta vec{p}$ совпадает по направлению с силой $vec{Q}$. С помощью рис. 2 построим вектор изменения импульса $Delta vec{p} = m( vec{v}^{ prime} – vec{v})$ (рис. 5). Этот вектор, так же как и вектор $vec{Q}$ на рис. 3, образует угол $gamma$ с нормалью к стенке. Непосредственно из рис. 5 видно, что
$v_{ parallel}^{ prime} = v_{ parallel} – 2v_{ perp} tg gamma$. (2)
Деля обе части этого равенства на $v_{ perp}$ и учитывая, что $v_{ parallel}/v_{ perp} = tg alpha, v_{ parallel}^{ prime}/ v_{ perp}^{ prime} = tg beta$, a $tg gamma = mu$, получаем
$tg beta = tg alpha – 2 mu$. (3)
Из полученной формулы видно, что при малых углах падения, когда $tg alpha < 2 mu$, результат теряет смысл. С чем это связано? Формула (3) выведена в предположении, что проскальзывание мяча не прекращалось в течение всего времени его контакта со стенкой. Однако при малых углах падения проскальзывание мяча может прекратиться раньше, чем он отделится от стенки. Это связано с тем, что сила трения скольжения, направленная противоположно $vec{v}_{ parallel}$, не только тормозит поступательное движение мяча, но и вызывает его вращение по часовой стрелке, так как точка приложения силы трения не совпадает с центром мяча. Проскальзывание прекращается в тот момент, когда связанная с вращением скорость нижней точки мяча сравняется по модулю с параллельной поверхности составляющей скорости центра мяча.
Случай, когда в процессе столкновения со стенкой проскальзывание мяча прекращается, более сложен для исследования, так как требует привлечения уравнения, описывающего вращательное движение. При этом оказывается, что ответ, даваемый формулой (3), становится неприменимым даже при угле падения $alpha$, тангенс которого несколько больше $2 mu$. Точный расчет дает для предельного угла падения $tg alpha = 5 mu$.
Отскочивший от шероховатой стенки мяч обязательно будет вращаться, даже если до удара он не вращался. Кинетическая энергия этого вращения возникает за счет уменьшения кинетической энергии поступательного движения. Некоторая часть механической энергии мяча при ударе переходит в тепло.
Нетрудно сообразить, что даваемое формулой (3) значение угла отражения $beta$ справедливо и в том случае, когда до удара мяч вращался против часовой стрелки. Не представляет труда найти угол отражения и тогда, когда до удара мяч вращался по часовой стрелке. Если это вращение достаточно быстрое, так что проскальзывание мяча не прекращается в течение удара, то, рассуждая так же, как и при получении выражения (3), находим
$tg beta = tg alpha + 2 mu$. (4)
В этом случае кинетическая энергия поступательного движения мяча в результате удара о стенку увеличивается. Это увеличение, как и выделение тепла во время удара, происходит за счет кинетической энергии вращения.