Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
1969 / 825 / 115
Регистрация: 01.10.2012
Сообщений: 4,889
Записей в блоге: 2

Сила (по Ньюьону и без)

17.12.2015, 16:43. Показов 1509. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте

Есть 3D объекты имеющие массу. Есть движок физики, которому я могу сообщать "силы" (вектора) в результате которых объекты могут двигаться. Пример: юзер включил силу: направление по оси X и величина напр 10. В рез-те объекты движутся с ускорением 10. Сила действует по Ньютону (F = m * a). Чтобы масса не путалась под ногами положим ее = 1 (это домножение на константу). Все хорошо.

Предположим так сила прилагается в течение 2 секунд, в рез-те объект приобрел скорость v = (20, 0, 0). Теперь юзер меняет направление силы - она уже действует по Y. Еще через 2 сек v = (20, 20, 0). Это абсолютно корректный рез-т по первому закону Ньютона. НО... он не устраивает юзера. "Чего это объект летит по диагонали? Я силу направил вверх, мне НАДО чтобы он вверх и полетел". Др словами надо гасить инерцию, полностью или частично. Это соответствует тому что объект как бы "активен", типа самолетик умеющий тормозить и.т..п.

В приведенном примере гашение выглядит очень просто - да приложим доп силу против текущего вектора скорости (ну точнее против его компоненты не совпадающей с текущим направлением силы). Увы, так нельзя по 2 причинам:

1) Сил может быть сколько угодно, поэтому одна не должна давить все

2) Текущий вектор скорости конечно всегда известен, но он может не иметь ничего общего с приложенными ранее силами. Если напр объект уперся в препятствие то его скорость ноль, а если отскочил - скорость вообще направлена в др сторону. Этим занимается движок, менять скорость напрямую хотя и можно, но ничего хорошего не дает, грамотно прилагать силы. Прошу поделиться соображениями (хотя бы и сырыми).

Не по теме:


Ну что, опять "стык" теории и практики? :)


С уважением
Игорь
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.12.2015, 16:43
Ответы с готовыми решениями:

Гравитационное поле. Сила тяжести. Первая космическая сила. Как понять?
Гравитационное поле. Сила тяжести. Первая космическая сила. Как понять?

Сила тертя і сила пружності
Ребят, помогите, пожалуйста! Нужно решить одну задачку по физике. Один кінець горизонтально розташованої пружини жорсткістю k=250 Н/м...

Сила тока...
в цепь переменного тока напряжением 220 В и частотой 50 Гц последовательно включены резистор сопротивлением R=100 Ом, катушка...

38
Эксперт функциональных языков программированияЭксперт по математике/физике
4313 / 2105 / 431
Регистрация: 19.07.2009
Сообщений: 3,204
Записей в блоге: 24
17.12.2015, 18:09
Давайте Вы напишите несколько примеров того, как система должна себя вести.
Я начну:
1. Прикладывается одна сила 1Н по X в течении 1с, далее 1Н по Y в течении 1с, других сил нет, столкновений нет. Какая скорость в моменты t=1,2,5с?
2. Прикладывается одна сила 1Н по X в течении 1с, далее 1Н по Y в течении 1с, и другая постоянная сила в 10Н по Y, столкновений нет. Какая скорость в моменты t=1,2,5с?
3. Летит тело со скоростью 10м/с в момент t=0, столкновений за 2с нет. Какая скорость в момент t=1,2с?

Я, например, хотел бы увидеть именно на примерах, почему обычное трение здесь не подходит.
0
1969 / 825 / 115
Регистрация: 01.10.2012
Сообщений: 4,889
Записей в блоге: 2
18.12.2015, 11:36  [ТС]
Цитата Сообщение от Mysterious Light Посмотреть сообщение
1. Прикладывается одна сила 1Н по X в течении 1с, далее 1Н по Y в течении 1с, других сил нет, столкновений нет. Какая скорость в моменты t=1,2,5с?
Нужно иметь возможность как "физических", так и "синтетических" сил. Я планирую параметр "Инерция" для каждой силы индивидуально.

1) Инерция = 1 (макс) все происходит строго по Ньютону
v(0) = (0, 0, 0)
v(1) = (10, 0, 0)
v(2) = (10, 10, 0)
v(5) = (10, 10, 0)

2) Инерция = 0 (мин) все происходит по "хотелке" юзера, с только одной силой вектор скорости меняется мгновенно
v(0) = (0, 0, 0)
v(1) = (10, 0, 0)
v(2) = (0, 10, 0)
v(5) = (0, 10, 0)

Промежуточные значения параметра - микс между этими 2 крайними случаями
Цитата Сообщение от Mysterious Light Посмотреть сообщение
2. Прикладывается одна сила 1Н по X в течении 1с, далее 1Н по Y в течении 1с, и другая постоянная сила в 10Н по Y, столкновений нет. Какая скорость в моменты t=1,2,5с?
Предыдущий вариант(ы), плюс нарастающий вектор второй силы. Т.е. если направление силы не меняется - все просто по Ньютону

Цитата Сообщение от Mysterious Light Посмотреть сообщение
3. Летит тело со скоростью 10м/с в момент t=0, столкновений за 2с нет. Какая скорость в момент t=1,2с?
Так и будет 10м/с пока не вмешаются др факторы

Цитата Сообщение от Mysterious Light Посмотреть сообщение
Я, например, хотел бы увидеть именно на примерах, почему обычное трение здесь не подходит.
Потому что трение гасит ВСЕ силы противоположные вектору скорости. В примере 2 оно в первую очередь погасит вторую силу (часто гравитацию), а это в наши планы не входит
0
Эксперт функциональных языков программированияЭксперт по математике/физике
4313 / 2105 / 431
Регистрация: 19.07.2009
Сообщений: 3,204
Записей в блоге: 24
18.12.2015, 11:52
Цитата Сообщение от Igor3D Посмотреть сообщение
1) Инерция = 1 (макс) все происходит строго по Ньютону
Тут всё понятно
Цитата Сообщение от Igor3D Посмотреть сообщение
2) Инерция = 0 (мин) все происходит по "хотелке" юзера, с только одной силой вектор скорости меняется мгновенно
Цитата Сообщение от Igor3D Посмотреть сообщение
Так и будет 10м/с пока не вмешаются др факторы
Вообще не понятно. Почему-то x-я компонента скорости при переключении силы вдоль y должна занулиться, а y-я компонента скорости при выключении силы не должна исчезнуть. То же и в следующем примере.

Хорошо, тогда такой вопрос:
Летит тело со скоростью (1,0) в поле тяготения по горизонтали, за время 1 ускоряется до (1,1), далее прикладывается дополнительная сила (1,-2) и ускоряет за время 1 совместно с гравитацией до (2,0). Далее (в следующий момент времени) происходит отскок от стенки (-2,0). Далее тело свободно летит 1с, набирает скорость (-2,1), после чего включаем на 1с силу (1,-2).
Какая скорость будет через 1с?

Если инерция=1, то будет (-1,0).
Если инерция=0, то, как я понял, все написанные скорости будут именно такими, но какая компонента скорости должна в конце занулиться?

Добавлено через 1 минуту
Сейчас я задаю наводящие вопросы, чтобы понять, что хочется получить на выходе.
Эдакий реверс инжениринг задачи.
0
1969 / 825 / 115
Регистрация: 01.10.2012
Сообщений: 4,889
Записей в блоге: 2
18.12.2015, 15:37  [ТС]
Ничего "причудливого" в запросе юзеров нет. Реальная цель - сделать простейшую вещь (см аттач), так чтобы радиус разворота удобно регулировался. При инерции = 0 этот радиус тоже 0, такое движение может оказаться совершенно неестественным - ну то дело юзера, подберет значение.

Как уже говорилось, сделать это просто трением не выходит. Допустим на аттаче нарисован путь "самолетика" который умеет как-то "рулить", тормозить и.т.п. Ну так на него спокойно может действовать др сила, напр ветер или гравитация. Поэтому тормозить все силы трением - не выход.

Что делает пилот для такого разворота? Он вывернет руль не на 90 градусов, а с каким-то запасом до тех пор пока вектор скорости не примет нужное направление. Вот юзер и хочет чтобы это делалось автоматом - резонно, руками это непросто.

Цитата Сообщение от Mysterious Light Посмотреть сообщение
Хорошо, тогда такой вопрос:
Летит тело со скоростью (1,0) в поле тяготения по горизонтали, за время 1 ускоряется до (1,1), далее прикладывается дополнительная сила (1,-2) и ускоряет за время 1 совместно с гравитацией до (2,0). Далее (в следующий момент времени) происходит отскок от стенки (-2,0). Далее тело свободно летит 1с, набирает скорость (-2,1), после чего включаем на 1с силу (1,-2).
Какая скорость будет через 1с?
Не знаю Вообще как отрабатывать отскок - соображений пока нет
Изображения
 
0
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
19.12.2015, 01:12
Такое ощущение, что решение подобной проблемы я уже видел.

А максимальная скорость движения ограничена?

В общем случае могу предложить производить поворот вектора скорости на величину зависящую от инерции и величины вектора силы, которая толкает предмет в новом направлении.
Т.е., сначала поворачиваем вектор скорости в ту сторону, куда толкают, а при полном повороте уже разрешить увеличивать скорость.
Конечно, тут нужно подумать как пользователь захочет чтобы предмет двигался, если угол между вектором скорости и вектором ускорения - тупой. Наверное, чтобы это учитывать, можно попробовать изменять скорость согласно синусу угла между вектором скорости и вектором ускорения.

Добавлено через 2 минуты
Или добавить трение.
0
1969 / 825 / 115
Регистрация: 01.10.2012
Сообщений: 4,889
Записей в блоге: 2
19.12.2015, 10:32  [ТС]
Цитата Сообщение от wingblack Посмотреть сообщение
А максимальная скорость движения ограничена?
Да, задается пользователем. Сила бездействует (ускорение ноль) если проекция скорости на направление силы превышает заданный предел.

Цитата Сообщение от wingblack Посмотреть сообщение
Т.е., сначала поворачиваем вектор скорости в ту сторону, куда толкают, а при полном повороте уже разрешить увеличивать скорость.
Как уже говорилось, нельзя (неграмотно) хватать вектор скорости грязными руками. Может быть сколько угодно др факторов и какая будет финальная скорость - решает движок.

Пример: едет машинка и поворачивает (аттач выше). Но при этом она находится на планете Земля которая летит с немалой скоростью в космосе. Очевидно, действия водилы Землю-то не тормозят
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
25.12.2015, 12:42
Igor3D, трение останавливает все силы, но пока пользователь жмет в кнопку ускорение действует каждый кадр, в итоге та скорость которая была от прошлого нажатия каждый кадр все уменьшается, а скорость от текущего нажатия увеличивается.

Цитата Сообщение от Igor3D Посмотреть сообщение
1) Сил может быть сколько угодно, поэтому одна не должна давить все
Должна, если мячик толкнуть он рано или поздно остановится, но если его сбросить гравитация будет подталкивать его сильнее чем трение останавливать (до определенного момента когда скорость станет max).
0
1969 / 825 / 115
Регистрация: 01.10.2012
Сообщений: 4,889
Записей в блоге: 2
25.12.2015, 14:31  [ТС]
Цитата Сообщение от AncientPenguin Посмотреть сообщение
.. в итоге та скорость которая была от прошлого нажатия каждый кадр все уменьшается...
Само по себе нет, такое уменьшение будет если мы зададим еще силу трения.

Ладно, может потом мысли будут, пока помесим трение. См тот же незатейливый скриншот (скругленный уголок). Пусть начальная скорость была напр (100, 0, 0), а конечная (0, 100, 0). Какой должна быть сила (или коэффициент?) трения чтобы требуемый разворот состоялся:

- за 1 сек
- за 0.5 сек
- за 0.2 сек
?
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
25.12.2015, 15:00
Цитата Сообщение от Igor3D Посмотреть сообщение
Само по себе нет, такое уменьшение будет если мы зададим еще силу трения.
Если не зададим, то толку от такой физики? Вы понимаете что у вас гусиное перо сброшенное в атмосфере упадет с такой скоростью что останется кратер.

Цитата Сообщение от Igor3D Посмотреть сообщение
Какой должна быть сила
Трение о поверхность
Ffr = Kповерхности * |V|

Трение о воздух (жидкость)
Ffr = Kатмосферы * |V| * |V|

Цитата Сообщение от Igor3D Посмотреть сообщение
(или коэффициент?) трения чтобы требуемый разворот состоялся:
В зависимости от коэффициента трения и прикладываемого (нажатием) ускорения.
1
1969 / 825 / 115
Регистрация: 01.10.2012
Сообщений: 4,889
Записей в блоге: 2
26.12.2015, 13:24  [ТС]
Цитата Сообщение от AncientPenguin Посмотреть сообщение
В зависимости от коэффициента трения и прикладываемого (нажатием) ускорения.
Так вопрос и был какой должен быть коэффициента трения. Ну ладно, не суть, считать Вы не стали - и правильно сделали, там выходит что для разворота даже за 1 сек нужно колоссальное трение, не говоря уже о более резких. И чтобы его преодолевать нужно задрать ускорение (возможно в неск раз). Управлять этим нереально. Да и вообще, трение - свойство объекта и/или окружения, а не силы. Стало быть я не могу иметь 2 силы с разными временами разворотов?

Это стандартная ситуация: найдена аналогия с реальностью которая четко, стопудово существует (в данном случае трение). Срабатывает рефлекс типа "все, это (и только это) правильно, остальное неверно". Хотя вверху я не раз намекал: "самолетик", "машинка", т.е. это управляемое движение, стихийные силы (ветер, гравитация) таких разворотов и не должны давать. Может быть правильный термин здесь "торможение", от него уже плясать.
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
26.12.2015, 16:07
Цитата Сообщение от Igor3D Посмотреть сообщение
Это стандартная ситуация: найдена аналогия с реальностью которая четко, стопудово существует (в данном случае трение). Срабатывает рефлекс типа
Срабатывает рефлекс типа "уже один раз сделал физику".

Цитата Сообщение от Igor3D Посмотреть сообщение
Так вопрос и был какой должен быть коэффициента трения. Ну ладно, не суть, считать Вы не стали - и правильно сделали, там выходит что для разворота даже за 1 сек нужно колоссальное трение, не говоря уже о более резких.
Для разворота самолета со скоростью 100 м/с какое нужно трение? Он что резко развернется и полетит вбок по хотелке "юзера"?

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

Цитата Сообщение от Igor3D Посмотреть сообщение
Что делает пилот для такого разворота? Он вывернет руль не на 90 градусов, а с каким-то запасом до тех пор пока вектор скорости не примет нужное направление. Вот юзер и хочет чтобы это делалось автоматом - резонно, руками это непросто.
Вы ведь понимаете что ровно самолетик не физика разворачивает? Как вариант фейка, после просчета трения разворачивать вектор скорости в направлении вектора "куда ткнул юзер" с некоторым шагом. Ну или ИИ-пилот.
0
Модератор
Эксперт функциональных языков программирования
3135 / 2282 / 469
Регистрация: 26.03.2015
Сообщений: 8,884
26.12.2015, 16:20
Цитата Сообщение от Igor3D Посмотреть сообщение
Он вывернет руль не на 90 градусов
Для этого нужен руль, а у Вас, как я понял из условия, только педаль газа.

Добавлено через 1 минуту
Цитата Сообщение от AncientPenguin Посмотреть сообщение
И чем управляемое тело отличается от не управляемого с точки зрения физики?
У управляемого тела сила трения различна в разных направлениях (зависит от положения руля).
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
26.12.2015, 16:34
Цитата Сообщение от Shamil1 Посмотреть сообщение
У управляемого тела сила трения различна в разных направлениях (зависит от положения руля).
Если я на ходу руль оторву трение станет одинаковым? Положение руля явно изменится если его оторвать. А если я машину с горки скачу там не важно будет в какую сторону колеса повернуты? Ну ей же никто не управляет.
0
Модератор
Эксперт функциональных языков программирования
3135 / 2282 / 469
Регистрация: 26.03.2015
Сообщений: 8,884
26.12.2015, 17:00
Цитата Сообщение от AncientPenguin Посмотреть сообщение
Если я на ходу руль оторву трение станет одинаковым? Положение руля явно изменится если его оторвать.
Понятно, что имеется в ввиду вся рулевая система, а не сам руль.

Цитата Сообщение от AncientPenguin Посмотреть сообщение
А если я машину с горки скачу там не важно будет в какую сторону колеса повернуты? Ну ей же никто не управляет.
Как это не управляет? Рулевая система никуда не делась.
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
26.12.2015, 18:01
Shamil1, ладно намекну по другому, у птицы разное трение под и над крыльями, кто то ей управляет? Дело не в том что есть пилот или руль, а в самой разнице сил трения, куда меньше сопротивления туда и движение, а руль просто меняет трение.
0
Модератор
Эксперт функциональных языков программирования
3135 / 2282 / 469
Регистрация: 26.03.2015
Сообщений: 8,884
26.12.2015, 20:07
AncientPenguin,
Я так и не понял, на что Вы намекаете. Ещё раз повторю свою мысль: "у управляемого тела сила трения различна в разных направлениях (зависит от положения руля)." С чем Вы несогласны? С терминологией?
0
99 / 46 / 18
Регистрация: 09.08.2015
Сообщений: 367
26.12.2015, 22:50
Цитата Сообщение от Shamil1 Посмотреть сообщение
Я так и не понял, на что Вы намекаете.
Да все на то же:

Цитата Сообщение от AncientPenguin Посмотреть сообщение
чем управляемое тело отличается от не управляемого с точки зрения физики?
Физическому движку без разницы управляется тело или нет.
0
Модератор
Эксперт функциональных языков программирования
3135 / 2282 / 469
Регистрация: 26.03.2015
Сообщений: 8,884
27.12.2015, 00:21
Цитата Сообщение от AncientPenguin Посмотреть сообщение
Физическому движку без разницы управляется тело или нет.
Разница в том, что управляемое тело, меняет собственное сопротивление.

Добавлено через 1 минуту
p.s. Меняет: было минимальное сопротивление в одном направлении, теперь минимальное сопротивление в другом направлении.
0
1969 / 825 / 115
Регистрация: 01.10.2012
Сообщений: 4,889
Записей в блоге: 2
27.12.2015, 12:02  [ТС]
Цитата Сообщение от Shamil1 Посмотреть сообщение
Для этого нужен руль, а у Вас, как я понял из условия, только педаль газа.
А как Вы так поняли? Там напр написано
Цитата Сообщение от Igor3D Посмотреть сообщение
Теперь юзер меняет направление силы - она уже действует по Y
Т.е. никто и не думал скрывать факт "руления".

Рискну еще раз (робко) предложить понятие/сущность "торможение" или может просто "тормоз". Имею ввиду что подавляется не просто "часть текущего вектора скорости" (как с трением), а лишь его часть не совпадающая с текущим ускорением. Напр для исходного примера должен гаситься вектор X

Добавлено через 5 минут
Цитата Сообщение от AncientPenguin Посмотреть сообщение
Для разворота самолета со скоростью 100 м/с какое нужно трение? Он что резко развернется и полетит вбок по хотелке "юзера"?
Да, если юзер обеспечил такие параметры силы. Очевидно что трение здесь не к месту
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.12.2015, 12:02
Помогаю со студенческими работами здесь

Сила трения
На горизонтальной поверхности лежит брусок массой m = 0,9 кг . В него попадает пуля массой vo = 12 г, летящая ...

Сила трения
Писал сегодня отборочную олимпиаду по физике при БГУ. И после неё начали спросить с одноклассником нужно ли учитывать силу трения. ...

сила инерции
При аварийном торможении движущегося горизонтально вагона подвешенная на нити гирька массой m = 0.5 кг отклонилась на угол 30° от...

Сила трения
В установке, изображенной на рисунке масса тела, расположенного на наклонной плоскости, равна m1 = 3 кг, гири — m2 = 2 кг, коэффициент...

В чем сила C#?
представилась возможность начать изучать программирование, вернее попробовать себя в профессии программиста, правда перед этим немного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru