1 / 1 / 0
Регистрация: 06.05.2021
Сообщений: 228
|
|
Движение тела с учётом сопротивления воздуха01.09.2023, 12:49. Показов 3344. Ответов 31
Метки нет Все метки)
(
Добрый день, вопрос скорее по математике и физике. Моя программа рисует траекторию движения снаряда с учётом сопротивления воздуха. Изначально задаётся скорость и угол, затем она через косинус и синус раскладывается на составляющие по оси Х и У. Затем для каждой оси каждый кадр считается скорость по формуле Vx = Vx - a. Где "a" ускорение создаваемое сопротивлением воздуха. Для оси У Vy = Vy - a - g, если тело перестаёт лететь вверх и начинает падать, то Vy = Vy + a - g, так как скорость меняет знак. В одном из тестов я отключил силу тяжести. По логике вещей, тела должны лететь по прямой, постепенно замедляясь, но вышло всё совсем не так.
Суть проблемы - сопротивление воздуха пропорционально квадрату скорости. Соответственно, если, например, по оси Х скорость больше, чем по оси У, то по оси Х сопротивление воздуха сильнее и скорость падает быстрее. В итоге, тело начинает скривлять траекторию в сторону оси Х. Если же вертикальная составляющая скорости больше, чем горизонтальная, то тело начинает скривлять траекторию в сторону оси У. Этот эффкет выражен тем больше, чем меньше отношение массы тела к его сопротивлению воздуха и чем больше одна из составляющих скорости. Под углом 45 градусов, соответственно, обе составляющих скорости равны и тело летит прямо. Формулы вроде бы я написал правильно. Возникает вопрос - неужели такой эффект есть и в реальности? Мне почему-то кажется что нет и где то всё же кроется ошибка. Ведь сила сопротивления воздуха должна иметь вектор направленный ровно в противоположную сторону вектору скорости.
0
|
01.09.2023, 12:49 | |
Ответы с готовыми решениями:
31
Движение тела, брошенного под углом к горизонту, с учетом сопротивления воздуха Моделирование полета тела с учетом сопротивления воздуха Баллистическое движение с учетом сопротивления воздуха |
![]() 6344 / 3515 / 1428
Регистрация: 07.02.2019
Сообщений: 8,981
|
|||
03.09.2023, 15:15 | |||
Ballantrae, например, вы сами пишете, что у вас там минимум две силы и они не всегда сонаправленны, поэтому менять направление вектора скорости удобнее через операции над векторами, а не через операции над углами.
Добавлено через 5 минут Не по теме:
Сила и скорость, величины разного порядка. Сила может превышать по модулю скорость, ваше "подсечь" делает вычисления не корректными и эту проблему не решает, т.к. проблема "развернуть тело" лежит в плоскости численного интегрирования.
0
|
03.09.2023, 17:29 | |||
Не по теме:
Вообще здесь это ненужные тонкости, пусть товарищ вектора освоит
0
|
03.09.2023, 17:59 | ||
Не по теме:
Решение этой проблемы зависит от потребности задачи. Если это не вычисления реального времени для какой-то физической симуляции, то можно выбрать подходящий метод интегрирования (Рунге-Кутта, например). Если нужно вычислять в реальном времени, то силу сопротивления среды следует выделить отдельно, и интегрировать не классическое уравнение движения Ньютона, а решить дифур и интегрировать V(t) = K*tanh((F*t)/(m*K)+tanh-1(V0/K)), где K=sqrt((2*F)/(p*C*S)), а F - все остальные силы, не зависящие от скорости. В игровых физ. движках упрощают еще больше, просто применяя дэмпинг скорости после интегрирования других сил(что вообще говоря не корректно): V=V0/(1 + K*V0*t), где K=(p*C*S)/(2*m). Часто отбрасывают V0 в знаменателе, делая дэмпинг константным (в реальности сила вязкого трения не способна остановить тело, на бесконечно большом интервале времени скорость будет стремиться к нулю, но тело пройдет бесконечно большое расстояние).
0
|
03.09.2023, 19:16 | ||
Не по теме:
Ну и вряд ли решение дифура сведется к "сопротивление пропорционально квадрату скорости", это наверняка упрощение. И что, при скорости напр 100 объект тормозится с ускорением -200? НЕ ВЕРЮ :) (хотя конечно доказать не могу). Кстати кто такие p, C, S ? (последнее наверно лобовая площадь?). Спасибо
0
|
03.09.2023, 19:26 | ||||
Не по теме:
Решение дифура без учета остальных сил(естественное торможение) - вторая формула.
0
|
03.09.2023, 20:19 | ||
Не по теме:
zayats80888, возможно эта тема ускользнула от Вашего внимания, там Ваши познания в физике были бы очень кстати. Спасибо
0
|
1 / 1 / 0
Регистрация: 06.05.2021
Сообщений: 228
|
||
07.04.2024, 19:19 [ТС] | ||
По крайней мере, у меня получается ситуация, при которой время полёта тела, почему то увеличивается от величины скорости. Особенно хорошо это заметно, если одному телу задать начальную скорость 0, а второму большое значение по направлению вдоль оси X. По идее, два тела должны упасть одновременно. Просто одно из них ещё улетит в сторону. Тем не менее, тело, которое летит вдоль оси X падает на 3 секунды позже. А этого явно быть не должно.
0
|
![]() 6344 / 3515 / 1428
Регистрация: 07.02.2019
Сообщений: 8,981
|
|||
07.04.2024, 19:29 | |||
Добавлено через 2 минуты
0
|
1 / 1 / 0
Регистрация: 06.05.2021
Сообщений: 228
|
|||
07.04.2024, 20:01 [ТС] | |||
Vx сопр = PCS * V *Vx \ 2. Vy сопр = PCS * V *Vy \ 2. Вот допустим, что у меня Vx = 1000 м/с, а Vy = 10м/с. V в этот момент времени равна sqrt(1000^2 + 10^2) = 1000.05 м/с. Получается Vx сопр = PCS * 1000.05 * 1000 \ 2. Vy сопр = PCS * 1000.05 * 10 \ 2. Если увеличить значение скорости в 10 раз по оси X, то V = sqrt(10000^2 + 10^2) = 10000.05 м/с. И: Vx сопр = PCS * 10000.05 * 1000 \ 2. Vy сопр = PCS * 10000.05 * 10 \ 2. Так вот и получается, что от горизонтальной составляющей зависит вертикальная составляющая силы сопротивления. Добавлено через 6 минут
0
|
![]() 6344 / 3515 / 1428
Регистрация: 07.02.2019
Сообщений: 8,981
|
||
07.04.2024, 20:07 | ||
Если хотите расчитывать достовернее, то интегрируйте линейные дифуры, о чем я уже писал. Если для вас это вызывает трудности, то смиритесь с тем, что есть. Не по теме: Кстати, спутник, сходя с орбиты, за счет трения об атмосферу приобретает энергию и может "отскакивать" назад. Так что не удивляйтесь.
1
|
08.04.2024, 15:30 | ||
0
|
![]() 6344 / 3515 / 1428
Регистрация: 07.02.2019
Сообщений: 8,981
|
||
08.04.2024, 15:49 | ||
Кликните здесь для просмотра всего текста
Там конечно механизм сложнее, но величина силы отталкивания так же пропорциональна квадрату скорости, поэтому такой эффект.
0
|
08.04.2024, 15:49 | |
Помогаю со студенческими работами здесь
32
Расчет траектории движении тела с учетом сопротивления воздуха Траектория движения тела, брошенного под углом к горизонту с учетом сопротивления воздуха
Движение тела брошенного под углом к горизонту с учетом сопротивления Программа "падение тела с учетом сопротивления воздуха" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
![]() |
||||
dev-c++5.11 Продолжаю движение.
russiannick 08.06.2025
Казалось, день прошел впустую. Просмотрел кучу видео и только потом заметил заголовок - уроки си. Искусители сбивали новичка с пути с++. Так легко ошибиться когда вокруг столько яп содержащих в. . .
|
Квантовые алгоритмы и обработка строк в Q#
EggHead 07.06.2025
Квантовые вычисления перевернули наше представление о том, как работать с данными, а Q# стал одним из ключевых языков для разработки квантовых алгоритмов. В традиционых системах мы оперируем битами —. . .
|
NUnit и C#
UnmanagedCoder 07.06.2025
В . NET существует несколько фреймворков для тестирования: MSTest (встроенный в Visual Studio), xUnit. net (более новый фреймворк) и, собственно, NUnit. Каждый имеет свои преимущества, но NUnit. . .
|
с++ Что нового?
russiannick 06.06.2025
Продолжаю обзор dev-cpp5. 11. Посмотрев на проекты, предоставленные нам для обучения, становится видно, что они разные по содержащимся файлам
где:
. dev обязательно присутствует
. cpp/ . c один из них. . .
|
WebAssembly в Kubernetes
Mr. Docker 06.06.2025
WebAssembly изначально разрабатывался как бинарный формат инструкций для виртуальной машины, обеспечивающий высокую производительность в браузерах. Но потенциал технологии оказался гораздо шире - она. . .
|
Как создать первый микросервис на C# с ASP.NET Core, step by step
stackOverflow 06.06.2025
Если говорить простыми словами, микросервисная архитектура — это подход к разработке, при котором приложение строится как набор небольших, слабо связанных сервисов, каждый из которых отвечает за. . .
|
Рисование коллайдеров Box2D v2 на Three.js с помощью порта @box2d/core
8Observer8 06.06.2025
Используется порт Box2D v2 под названием @box2d/ core - пакет NPM. Загрузил документацию Box2D v2 на Netlify: https:/ / box2d-v2-docs. netlify. app/ Документацию Box2D v2 можно скачать с официального. . .
|
Как создать стек в Python
AI_Generated 05.06.2025
Как архитектор с более чем десятилетним опытом работы с Python, я неоднократно убеждался, что знание низкоуровневых механизмов работы стеков дает конкурентное преимущество при решении сложных задач. . . .
|
Server-Sent Events (SSE) в Node.js
run.dev 05.06.2025
Потоковая передача данных с сервера прямо в браузер стала повседневной потребностью - от биржевых графиков и спортивных трансляций до чатов и умных дашбордов. Много лет разработчики полагались на. . .
|
Создаем RESTful API на Golang с Fiber
golander 04.06.2025
Я перепробовал десятки фреймворков для создания RESTful API за последние годы, и когда впервые столкнулся с Fiber, понял, что это совсем другой уровень. Нет, я не собираюсь рассказывать сказки о. . .
|