Как Работать с Физикой на Python. Доска Гальтона [ Pygame + Pymunk ]
HTML-код
- Опубликовано: 2 окт 2024
- В этом ролике вы узнаете основы работы с физическими явлениями (гравитация, столкновения, сила упругости и трения) на примере физического движка Pynunk.
Проведем очень интересный опыт, смоделируем доску Гальтона (Galton board) при помощи языка программирования Python (Пайтон, Питон). Обработкой всей физики будет заниматься движок Pymunk, а отрисовку объектов воплотим через библиотеку Pygame.
Чтобы установить Pymunk, введите в терминале: "pip install pymunk"
Чтобы установить Pygame, введите в терминале: "pip install pygame"
Код из видео:
github.com/Sta...
#standalonecoder
Смотрю, и поражаюсь, как работают реки ютуба.
Реально годный канал - >2к
Какой-то "it", где уроки за час -
Тут главное не опустить руки раньше времени. Трешовые каналы типа ивангая и прочей нечисти вообще миллионы подписчиков собирали, да и собирают. Обучающие каналы от всяких скилбоксов уже утратили популярность, люди начали понимать, что это просто торгаши с рынка, которым лишь бы продать.
На этом канале контент интересный и обязательно соберет аудиторию. Но возможно стоило бы добавить каких-то обучающих роликов. Иногда не понятно как оно работает, но как-то все же работает. Ну и лично мне хочется, чтобы тот же пайгейм был последней версии.
Редкий дар объяснять кратко и толково!
Чувак, начни уже писать свой голос, очень крутые видосы у тебя! Спасибо.
Так тоже годно. Я привык ролика за 3, наверно.
Ты не понимаешь! Это не баг а фича!
Голос бота можно сделать в iTranslate и выбрать мужской, и скорость
Подача супер!
От описания задачи до воплощения. Очевидные веши поданы в ориганальном стиле.
И приветствие и озвучка без пафоса и на уровне.
Всех благ автору! Развития. Творческих успехов.
Каждое видео всё лучше и лучше. Успехов и в дальнейших работах.
Спасибо за библиотеку, долго искал что-то подобное, но всегда что-то не то попадалось. Можешь сделать математический маятник (там диффур интересный внутри заложен), гравитационное взаимодействие планет.
Все круче и круче. Как всегда на высоте
Большое спасибо за видео, обучаю детей питону и учусь сам. Это первое видео на Вашем канале, которое я посмотрел. Очень круто интересно, а главное понятно. Хотелось бы в будущем слышать на видео Ваш голос, если это возможно. Еще раз спасибо и успехов. Подписался, буду следить за каналом.
Спасибо, тебе за твои видосы
Ух ты!! Как всегда круто!!! Спасибо, очень полезный ролик)))
Годный контент и особенно аватарка с серпинским :) Вижу ты любишь алгоритмы и математику, а не формошлёпство, коего щас навалом.
Вобщем лайк, подписка, вот это вот всё.
И желаю творческих успехов, бро!
Благодарю за первый на канале комментарий насчёт автарки! 👍 Кстати она создана мною при помощи Python
@@anotherone3641 размер кода впечатляет! 👍
@@StandaloneCoder Спс:) Для понимания как это работает. Серпинский подобен Треугольнику Паскаля, если закрасить все непарные числа. При этом хранить все числа необязательно, достаточно одного последнего бита, по которому и определяется парность/непарность. Т.е. просто делаем сложение по модулю два (операция XOR). Ну или вот на питоне наглядная демонстрация :
>>> maxrows = 32
>>> row = [1]
>>> for rows in range(maxrows):
print(' '*(maxrows - len(row)), end='')
for r in row:
print("{:2}".format((' ', '^')[r]), end='')
print()
row = [sum(x) & 1 for x in zip([0] + row, row + [0])]
@@anotherone3641 отличная демонстрация, и как я понимаю, определять четность при помощи XOR менее ресурсозатратно, чем %2, потестил для Python, и получается в районе 20% быстрее
@@StandaloneCoder Ну да. %2 требует деления на уровне процессора (div помещает частное в один регистр, а остаток от деления в другой). деления и умножения чуть более ресурсозатратны чем побитовые операции. по этой же причине деления и умножения на степеня кратные двойке делали сдвигами. некоторые умудрялись даже на 20 так множить -- комбинацией сдвигов и сложений: 20*x = 4*x*5 :
x
Хмм, все очень круто. Попробуй своим голосом записывать видео, не стесняйся🥺
То, чего не хватало на ютубе. Почему этого не было раньше в моём фиде? Подписка моментально
Чего именно тебе не хватало ?
супер, ты лучший!
Лайк и подписка
Продолжай заниматься, дядя
❤️
Немного физики, немного разноцветных кирпичей.
Как всегда на высшем уровне! Хотел задать вопрос, сделаешь туториал по ray marching?
Скорее всего сделаю, но хочется завязаться на OpenGL, так что попозже...
@@StandaloneCoder вот за скорые планы по OpenGL отдельное спасибо! Очень жду!
Standalone Coder Оо, это прекрасный настрой)
На запрос о программировании Ютуб выдает в основном кучу говноконтента в числе которых хауди(который разбирается в программировании чуть лучше учителя информатики для 6-го класса ) , и пересмотрев их по несколько раз, Ютуб такой "Ну ладно, вот ещё есть вот такой контент". Что то определенное что-то не так...
Просто жиза.
Зделай урок по openGL, на русском ютубе их почти нет(
Плохо искал.. или ты захотел на питоне писать?
Круто, очень круто, лайк
Круто конечно, но гораздо интереснее было бы реализовать физику с нуля самому, без физического движка, пользовать готовые либы не так интересно.
Смотрю каждый ролик с огромным интересом. Оставлю комментарий, чтобы в будущем, когда этот канал станет большим и популярным, я мог доказать, что я тут с самого начала :] Ну и для поддержки, конечно. Спасибо!
спасибо, всё было интересно и доступно
спасибо большое! очень интересно!
Давай Физический движок по хардкору!
Физическую воду с кучей объектами!
Закон фарадея и так далее
Комп не зависал на стольких объектах?
еще вполне приемлемо, но лучше количество объектов уже не добавлять, это примерно предельное число получается
@@StandaloneCoder а на каком железе вы все это тестируете?
@@Алексей-ъ3л2х ноутбук Asus g750jz
@@StandaloneCoder довольно мощный ноут! В одном из видео вы использовали разрешение 1600х900, подумал, может, у вас что-то из серии Thinkpad-ов...
Бл реально очень интересный и топовый канал продолжай делать годноту
Вдохновляешь сильно)
Спасибо! Если бы не ты я бы не узнал об этой библиотеке!
Для продвижения
Валканал, перелогинься!
Хочу сказать, я запускал на телефоне этот pymunk, на пустом поле ≈ 40 ФПС, когда добавлю 50 шариков то становится ≈ 30, а когда 100 тогда 22-26 ФПС, а при 800 шириках ФПС 5-7, телефон 4гб ОЗУ, snapdragon 625, дисплей фулл HD, если знаете как повысить ФПС то скажи пожалуйста
можно ли удалять объекты которые ща пределы карт, просто процессор нагружают
Подписался на твой канал. Супер интересно. Но голос механический очень отталкивает. С обыкновенной озвучкой было бы смотреть приятней
Спасибо за видео) Все очень просто и понятно. Желаю тебе развитие канала. Можно сделать опыт с гравитиацие. Мне вспоминается игра ангрибедс которая в космосе.
Как же это круто, омг, почему у тебя все ещё 2к подписчиков
как взаимодействовать с объектами?
ну например управлять ими через клавиатуру чем можно изменять их местоположение
Чел, ты крутой! Жду новое видео!! :)
why isnt this in english. Like its actually making me mad. Your the only sane person to show these projects but then you go ahead and make it in russian.
Круто, если сделаю платформер то считай ты очень мне помог!!!
Спасибо
супер
топ контент, балин классно, давно искал такой контент, респект тебе
Когда я пытаюсь закрасить фон - мне именно после запуска пишет, что нету такого: surface.fill
while running:
pg.surface.fill(pg.Color('black'))
Ошибка:
AttributeError: module 'pygame.surface' has no attribute 'fill'
уберите pg:
surface.fill(pg.Color('black'))
@@StandaloneCoder тоже самое пишет..
@@PlexILIghT в описании видео есть ссылка на код
Я создаю ракетный симулятор на питоне, очень много морочился с физикой игры. Так что спасибо, помог
А как указать спрайт объекту из pymunk?
Вот все классно, прям то что нужно для питонистов. НО! Зачем использовать искусственный голос диктора из Дискавери. Он не живой и как-то не совсем впопад все поясняет. Сути это конечно в целом не мешает, но может сам комментировать свои видосы будешь, каждый шаг именно от себя - нагляднее будет. Тогда вообще будет "шикарно".
Монтажик развивается)
Очень круто! Отличный ролик!
По Больше бы Таких Людей !!! Лайки Парню!!!!!👍👍👍👍👍
Оч интересно но не все понятно) автор на лету божит с кодом, я бы много думал кажется над подобными вещами и особенно хитрыми циклами
как и в случаи с копией матрицы, я попробовал сделать сам, ну и как всегда не получилось, скопировал твой код, начало выдовать ошибку на 81ой строке TypeError: integer argument expected, got float, помогите пж
Исправь 81 строчку на:
[pg.draw.circle(surface, color, (int(ball.position[0]), int(ball.position[1])), ball_radius) for color, ball in balls]
@@StandaloneCoder я провел симуляцию с 100,000 шарами с радиусом 1 массой 1, и с радиусом 5 для приград, вышло очень круто
"Сделать сам", "скопировал твой код"))
Захотел учить пайтон после этого видео, спасибо
хорошо что Ютуб мне это порекомендовал
Вы гениальны! Я подписался после первого же видео!
нужен фон и шарики должны быть с анимироваными лицами
Красиво сделал, молодец!
Давай симуляцию естествиного отбора
глянь канал foo52, люблю там позалипать на деревья. ЗЫ Тут же не запрещено упоминать другие каналы?
0:58 Рик справа, как образ программиста
Я ВЕРНУЛСЯ!
Круто)
Хочу уточнить можно ли менять позицию елемента, как в пайгем нажал кнопку - поехало?
Сколько ресурсов надо такой симуляции, сколько фпс при 800-та шариках?
для 800 объектов было в районе 25 фпс, так что примерно это предел, а позицию элементов можно смело менять для динамических и кинематических тел.
@@StandaloneCoder а можно вычисления частично/полностью переложить на видеокарту?
@@kekw5005 в Pymunk повлиять нам на скорость вычислений никак не получится, он и так написан на языке Си
@@StandaloneCoder Где-то слышал о связке с OpenGL. Но реальных реализаций встречать не приходилось. Точнее сказать, приходилось, но в конечном счете у людей было скорее больше ошибок и нерабочего кода, а так же повисшие топики на стаковерфлоу
@@StandaloneCoder а можно будет урок, как сделать в пайгейме онлайн?
как всегда лайк и спасибо за видео
Когда не любишь свой голос и такой:
Класс!!!
Спасибо, друг! Это то, что нужно
Интересно, какие физические эффекты рассчитывает данный движок? Я хочу смоделировать движение бильярдных шаров на сукне, чтобы понять, на сколько винт на шаре влияет на движение прицельного шара.. на сколько винты передаются от шара к шару.. При движении по сукну визникает множество эфектов, и сила кариолиса и при вращении центробежные силы.. и силы сжатия почти твердого обьекта и отталкивания в микромоменте как от пружины..
Тут придётся доверять библиотеке, альтернативно можно написать собственный код.
Зависит всё от того, на сколько реалистичным должен быть результат. Для игри лучше взять библиотеку, для инженерных вычислений чужая библиотека довольно высокий риск, хоть и задача не рискованная.
Для силы кориолиса нужно будет обозначить позицию на земном шаре и стороны света, относительно движения шара.
Для движения бильярдного шара, силу кориолиса можно смело упустить, относительно других воздействий, она ничтожно мала.
Не понимаю , почему у меня пишет что нет модуля с именем 'pymunk.pygame_util';'pymunk' is not a package?Обьясните пожалуйста если не сложно. (библиотеку я установил ).
Хочу симуляцию жидкости
На сколько знаю самые простые симуляции ничем не отличаются от того, что показано в видео. Т.е. это все такие же шарики, только меньше и с другими коэффициентами.
Привет у тебя очень крутой контент! Ты можешь сделать описание как сделать крутой стерео звук в игре с помощью Python?
ну тут просто топ как бы да, больше нечего сказать, да, ага
pygame знал, а вот за pymunk аригато)))
ты топовый побольше бы таких как ты
совсем не сложно
красиво и доступно сделано, молодец.
pygame сам по себе весьма мощный и удобный. его вполне можно рассматривать даже как альтернативу для отрисовки интерфейса, вместо классического tkinter.
не уверен насчёт kivy, потому что ещё не приходилось работать.
Бомба!))))😁 Ви молодець!))))☺️
Задача про двойной маятник
Почему ты пропускаешь некоторые строчки когда программируешь? Ответь пожалуйста!
Пустые строки используются, чтобы код более лучше читался. Рекомендации PEP8
Капец, откуда ты столько знаешь, давно вообще изучаешь программирование?
достаточно плотно стал заниматься где-то с 2018 года
Ви бог програмування))
Этот коммент нужен чтобы продвинуть это видео в рекомендуемые
Странно, почему твой канал раньше не был в рекомендациях, лайк подписка. Так держать, годный контент.
Супер интересно!!!
Не, ну тут однозначно подписка
Когда смотришь видео с таким голосом, ожидаешь что тебя чайника будут троллить, но нет, уже привык , что смотрю годный контент. Спасибо
Вы невероятный.
Когда ты купишь микрофон? Часть твоей аудитории готова задонатить на него
Зачем микрофон, итак всё понятно и слышно
А почему шарики в самом начале сквозь чашу прошли, на 10:47?
такое может происходить, в случае если объект движется быстрее, чем шаг обработки пространства space.step(), во избежание этого реализуют дополнительную функцию:
www.pymunk.org/en/latest/overview.html
раздел "Object tunneling"
Очень интересно
твой канал мне спас, литры часов, на написание физике, я просто пишу на pygame и тут так таковой физики нету, я уже решил сам всё писать, падение объектов, проверка столкновение с статическими объектами, чтобы они не провалились, но ты меня просто спас, спасибо тебе 💖
Круто надо будет попробовать!!!
5:18 у меня шар не отскакивает :(
Можешь помочь?
Понял, не поставил эластичность платформы
можешь сделать 2д бесконечный мир используя шум Перлина и сделать эффектом параллакса?
В планах выпустить видео про 3д генерацию ландшафта при помощи шума Перлина
@@StandaloneCoder с нетерпением жду!
класс! как мне нравится! это очень сложно для меня, но так хочется уметь таже легко управляться с кодом.
круть!!!
Годный канал, только это одно видео глянул и сразу подписался. Где и как пайтон учил?
Изучал самостоятельно, книги + много практики
благодаря тебе, мне теперь никогда не бывает скучно!
я правильно понял, что Positive в строчке pymunk.pygame_util.positive_y_is_up = False как бы переворачивает y, делает его положительным, если нет то можете обьяснить как работает эта строчка
Слушай, так с этим движком не стыдно и платформер какой нибудь сбахать, и с физикой не надо мучаться
совершенно верно, этот движок намного ускорит разработку любой игры
@@StandaloneCoder есть такая игра "Biolab Disaster" (сайт игры: playbiolab.com/), написанная на JS-движке (раньше он был платным), в ней активно демонстрируется физика частиц. Возможно ли сделать похожее с применением Pymunk? Было невероятно здорово, если бы вы в виде уроков разобрали и сделали нечто похожее!
Да, возможности Pymunk гораздо шире, я показал только основы. Поэтому я думаю, что это не последний выпуск про Pymunk 👍
@@StandaloneCoder спасибо, мы все с нетерпением будем ждать новых видео!
👍
Автор, скажи, можно ли задать обьекту начальную скорость ?
да, как линейную скорость velocity, так и угловую angular_velocity
смотрите в API движка про class pymunk.Body
@@StandaloneCoder спасибо
Блин, круто!
А сделай видео курс по созданию физического 2D движка на python?
у него уже есть