Элективный курс "моделирование физических процессов на эвм". Программное обеспечение Программа для моделирования физических процессов

Here is a list of Best Free Physics Simulation Software For Windows . These free Physics simulation games let you understand the basics of Physics theories, like Gravitation, Ohm’s law, Newton’s laws of motion , etc. All these Physics games are also suitable for kids. Some of these Physics games come with built-in simulation, with the help of which you can understand the effect of a change of a certain variable on a physical quantity.

You will also find a Physics simulation software in this list which is based on the Ohm’s law . On varying resistance and voltage in a circuit, it shows you the effect of changing these variables on electric current.

This list of free Physics simulation games also contain some games that will take you to the space adventure. With the help of simulations, you can view and understand the various phases of the moon and learn how these phases change with respect to the Earth’s movement. These games also provide the basic information about each planet and the only star in our Solar System, the Sun.

My favorite Physics Simulation software:

Magnetic Adventure and Physics for Kids are my favorite Physics simulation software in this list.

Magnetic Adventure : It is a real-time Physics game based on the Laws of Magnetism. It helps you learn the properties of a magnet. By playing this game, you can learn how a magnetic substance differs from a non-magnetic one. This interesting Physics game comes with a lot of exciting levels. Follow the rules of Magnetism in order to complete each level.

Physics For Kids : It is one of the best Physics games for kids. It comes with many interesting levels based on different theories of Physics. Some of these include: Force, Potential Energy and Kinetic Energy, Solar System, Inertia , etc.

Explore the list and give a try to these Physics games.

A Magnetic Adventure

A Magnetic Adventure is an interesting Physics simulation game for Windows. It is based on the laws of magnetism. In this game, you have to move an object with the help of a magnet and drop it at its destination point. This game is not so easy as it sounds, as there are several obstructions in each level. Tackle these obstructions by following the rules of Magnetism and complete a level. This free Physics simulation game comes with 50 interesting levels. As you move ahead in the game, you have to face more difficult obstructions.

This game is the introduction to properties of a magnet. By playing it, you can learn what a magnet is, how it works and what types of materials are attracted by a magnet.

How to play this Physics game:

In each level, a task will be given to you. Follow the properties of a magnet to solve each task. Move metallic items in the game with the help of a magnet. Place the magnet over a metallic object and move your mouse by holding its left click. The object starts moving along with the magnet. Release left click of mouse to drop that object. That’s all.

Awesome graphics and cool sound effects make this game more enjoyable and interesting. As you move ahead in the game, you will face more complicated Physics puzzles. Remember, a magnet can attract only metallic objects.

Features of A Magnetic Adventure:

  • It lets you create more than one player profiles.
  • It comes with an auto-save feature, which saves your game automatically on exit.
  • A lot of challenging levels are a great time-pass.
  • You can play it in full screen as well as on compact screen mode.

So, what are you waiting for? Install this free Physics game on your PC. A lot of Physics puzzles are waiting for you.

Home Page Download Page

Physics Sandbox Games

In this article, I have introduced you to a lot of Physics simulation games. Now, there is an entirely different class of Physics Simulation games, called, . These games let you create your own simulations and test them. You can check the link I posted earlier to check out a lot of Physics Sandbox games that you can use for Physics Simulation. My favorite from that list is Algodoo.

Algodoo is an interesting Physics simulation software in this segment. This is actually a Physics Sandbox game, which comes with 2D high definition graphics. It lets you learn Gravitational Forces, Friction, Elasticity, Density, Flow, Viscosity , and much more with fun. The best part of this freeware is that it lets you create your own Physics scenes and simulate them.

Let’s understand its interface. It comes with a number of tools to create Physics simulations:

  • Plane Tool : With the help of this tool, you can draw a plane on the screen at any angle. It also displays the angle at which you turn a plane. This helps you create a slope or an inclined plane tilted at a certain angle.
  • Move Tool : You can move any object in the scene by using this tool.
  • Rotate Tool : It lets you rotate an object at a certain angle.
  • Scale Tool : Used for changing dimensions of an object.
  • Cut Tool : You can cut an object at any cross section with the help of this tool.
  • Polygon Tool : Use this tool to draw closed shapes.
  • Brush Tool : Brush tool is used to draw both open and closed shapes.
  • Box Creation Tool : This tool is used to draw squares and rectangles.
  • Circle Creation Tool : This tool is used to draw circles.
  • Gear Tool : This tool is used for creating gears.
  • Chain Tool : This tool creates a chain.

Several other tools are available in this freeware. Use all these tools to create good Physics animations and save them.

Draw multiple gears and join them so as to understand the mechanics. You can draw fulcrum, pulley, and many other animations. It all depends on your creativity.

This is a great Physics simulation software. Download it and enjoy.

Home Page Download Page

Physics for Kids

Physics for kids is very cool Physics game suitable for kids. This Windows 10 app comes with different levels based on different theories of Physics . As this game is developed for kids, it features only an introductory part of theories of Physics . Kids can learn different Physics laws by performing practicals. Lots of interesting levels are added to this Physics games for kids, which include: Energy, Force, Friction, Free Fall, Potential Energy and Kinetic Energy, Newton, Inertia, Solar System , etc. Out of these levels, some come with Physics games, while some feature simulation.

Each Physics game comes with cute animated characters. All the levels of this Physics game are very easy, so that kids can easily play them and understand the concept behind them. For example, Lever is a very interesting game, which teaches about the result of applying effort on a fulcrum. In this level, you have to simply drop a little penguin on the empty end of the fulcrum, which tosses the pig resting on the other end of the fulcrum in the air. If strong effort is applied, pig will be tossed higher in the air.

If I talk about simulations, Solar System is one of these. The Solar System simulation lets you learn the names of all 9 planets of our Solar System.

The best part of the game is that these levels come with explanations. Kids can read these explanations while playing the game in order to understand which laws of Physics imply that level.

Home Page Download Page

Battery Resistor Circuit

Battery Resistor Circuit is a real time Physics simulation game. It comes with a simple electrical circuit with different electrical components, like ammeter, resistance, a temperature indicator, etc. It works on the Ohm’s law. You can vary voltage and resistance of the circuit to see its effect on the flow of current.

By varying the resistance and voltage of the circuit, you can analyze what is happening in the circuit. It also shows the direction of flow of electrons in the circuit and inside the battery. So, you can know about the flow of electrons inside and outside a battery. It also displays the number of electron counts and what is going on inside a battery during the flow of current. Moreover, there is an ammeter connected to the circuit. This ammeter shows the current readings of current with respect to change in voltage and resistance.

Solar System 3D Simulator

Solar System 3D Simulator is a free Physics simulation for Windows. This Physics simulation will take you to a real-time space adventure. Explore our solar system with this free Physics simulator. It displays an animation of 9 planets revolving around the only star of our Solar System, the Sun.

It is an educational software, which provides you the basic information of 9 planets of our Solar System. There is a button Planetary Information provided on the interface, clicking which opens a separate window containing basic information of all 9 planets. This information includes: Diameter, Orbital radius, Mass, Density, Temperature , etc. of each planet. Besides this, it also displays the number of moons of each planet.

It is a very basic Physics simulation game, which provides only a basic information, hence it is good for kindergarten kids. This free Physics simulation helps kids to learn the names of all 9 planets of our Solar System in correct chronological order.

General Features of this free Physics simulation:

  • Zoom in and zoom out features are available in this free Physics simulation software.
  • It lets you vary the revolution speed of planets.
  • Orbits: You can view or hide orbits by clicking this button.
  • View: This button simulates the 3D model in different angles.
Home Page Download Page

Asynx Planetarium

Asynx Planetarium is another Physics simulation in this segment. Download this free Physics simulation on your PC and start a space adventure. Unlike Solar System 3D Simulator software in this list, this Physics simulation not only provides information about the Sun and its planets, but also comes with a good collection of Constellations. There are more than 90 Constellations in the software. Some of these include: Draco – the Dragon, Libra – the Scales, Leo – the Lion, Mensa – the Table Mountain, Musca – the Fly, Taurus – the Bull , etc. It also displays the phases of the moon in real time simulation with different Constellations.

It comes with control buttons, with the help of which you can start/stop the simulation, vary its speed, zoom in and zoom out of the Physics animation. It also comes with a sync button. Enabling sync feature, it simulates the phases of the moon with respect to the Solar System simulation. It also displays the phases of the moon in real time. Moreover, it also displays the Longitude, Latitude, and Astronomical Unit from the Sun for each planet. Apart from these features, you can view the simulation of Inner Planets and Outer planets.

Like Solar System 3D Simulator, it also provides you the basic information of each planet and the Sun, which includes: Planet name, altitude, distance from the Earth, distance from the Sun, gravity, temperature , etc.

This free Physics animation software is available in more than 5 languages. Some of these are English, French, German, Czech, Spanish, Russian, etc.

The International Astronomical Union declared Pluto as a Dwarf Planet in 2006, but this Physics simulation freeware has only 8 Planets.

Home Page Download Page

Chain Reaction

Chain Reaction is another free Physics game in this list. This is a Windows 10 Physics Simulation app that is based on the concept of chain reactions. There are more than 20 exciting levels, which comprise of a closed box in which there are freely moving atomic particles. Your aim is to carry chain reactions in this closed box by triggering a Red dot to complete a level. To start a chain reaction, just left click using mouse. As a chain reaction starts, these atomic particles start sticking on the Red dot, which results in fusion of atoms. This is termed as an Explosion in the game. Due to the fusion of atoms, the area near the Red dot starts increasing, which increases the rate of fusion.

To complete a level, you have to explode the given number of atoms. For each explosion, you will get some points.

Home Page Download Page

Heart Box

Heart Box is another free Physics game for PC. This free Windows 10 app is based on the theory of Gravity. Everything on the Earth is attracted towards the Earth by its gravitational pull. Follow this theory of Gravity to clear all levels of the game.

How to play this free Physics simulation game:

Heart Box is very simple Physics game for Windows 10. There is a square box (named Heart Box here) provided in the game. Your aim is to take that box to the bucket provided in the game by creating a slope. Initially Heart Box is placed on a horizontal rod placed on two small square boxes. You have to cleave one of these boxes in order to create a slope, so Heart Box starts sliding. In this way, you have to make a path which guides Heart Box to destination point.

This Physics game comes with a lot of interesting levels. You have to complete the previous level to jump to the next one. But, if you want to play any random level, you have to purchase its full version, which comes with all levels unlocked.

NOTE : This is an Ad supported version.

Home Page Download Page

States Of Matter

States Of Matter is another Physics simulation software in this list. This software simulates states of matter and lets you know the effect of the change in temperature on different states of matter. Simulation is provided for all three states of matter. i.e. solid, liquid, and gas. You can study these three states of matter with real-time simulation. Download this Physics simulation freeware and observe what happens to atoms and molecules of different states of matter when you increase or decrease the temperature.

It features two types of simulations: One is Solid, Liquid, Gas , and other is Phase Changes . Both the simulations comprise of a closed vessel, a thermometer, and a temperature controller, but in the latter simulation, there are two other components, a pump and a pressure gauge.

Experiments are carried out on four different elements (Neon, Argon, Oxygen, and Water) in a closed vessel by varying temperature of the vessel. The thermometer displays the current temperature inside the vessel.

Phase Changes simulation of this freeware shows the pressure inside the vessel with respect to temperature. You can increase pressure by increasing the temperature of the vessel and vice-versa. If you want to vary pressure at a constant temperature, you can vary it by adding more molecules of an element with the help of a pump.

By changing the states of a particular element, you can observe the strength of covalent bonds among molecules and the effect of temperature on these covalent bonds.

Home Page Download Page

Magnet and Compass

position:="" relative="" top:="" left:="">

Magnet and Compass is another free Physics simulation software for PC. This is a very simple Physics simulation software, which teaches you about the electromagnetic fields of the Earth. It shows how the needle in a magnetic compass deflects and guides us in correct direction. You can vary the strength of the magnet field. A field meter is also provided in the software, with the help of which you can check the intensity of magnetic field at different points.

This free Physics simulation lets you learn the working principle of a magnetic compass.

Учителям остаётся только выбирать, если они, конечно, готовы к этому выбору. Сегодня мы предлагаем вашему вниманию 13 различных приложений и игр, которые могут пригодиться при изучении физики. Впрочем, они настолько интересны, что вполне подойдут не только ученикам и студентам, но и всем, кому интересно устройство нашего мира.

Snapshots of the Universe – удивительное приложение для iOS, не так давно выпущенное самим Стивеном Хокингом совместно с компанией Random House . Приложение состоит из восьми экспериментов, которые дают пользователям возможность не только получить базовые знания по физике, но и познакомиться с принципами, управляющими нашей Вселенной. В рамках предложенных экспериментов игроки могут отправлять ракеты в открытый космос, собирать собственные звёздные системы, искать и изучать чёрные дыры. Каждый эксперимент можно проводить бесчисленное количество раз, изменяя физические параметры и наблюдая за появляющимися эффектами. Чтобы лучше понять эксперименты, можно зайти в раздел объяснения результатов и посмотреть видео. Приложение доступно на iTunes . Cтоимость игры от великого физика составляет всего лишь $4,99.

Это игра с уникальным сочетанием особенностей аркады и головоломки, место действия которых – мир субатомных частиц. Взяв под контроль одного из кварков, вы должны вести переговоры с фундаментальными силами Вселенной. Другие частицы будут притягиваться и отталкиваться, соединяться и изменять полярность, задача несчастного кварка - не терять контроль и избегать разрушения. Через всю игру красной нитью проходит история Элисон – молодого физика с нелёгким прошлым. Её путешествие через субатомный мир протекает в воспоминаниях и в конечном счёте приводит к удивительным открытиям. На сайте представлена бесплатная демо-версия, за полную придётся заплатить от 5-ти до 50-ти долларов – в зависимости от особенностей вашей системы.

Игра от первого лица, разработанная лабораторией игр (MIT), даёт возможность игрокам познакомиться с восприятием пространства на околосветовых скоростях и понять теорию относительности. Задача игрока – перемещаться по 3D-пространству, собирать сферические объекты, которые замедляют скорость света на фиксированные значения, что даёт возможность наблюдать за различными визуальными эффектами эйнштейновской теории.

Чем медленнее движется излучение - тем яснее проступают некоторые физические эффекты. К 90-му собранному камню свет будет распространяться со скоростью пешехода, что заставит вас почувствовать себя героями сюрреалистического мира. Среди явлений, с которыми может познакомиться герой во время игры, эффект Допплера (изменение при движении игрока длина волны регистрируемого им света, что приводит к изменению окраски видимых предметов, которая смещается в ультрафиолет и инфракрасную область), абберация света (увеличение яркости света в направлении движения), релятивистское замедление времени (различия между субъективным ощущением времени игрока и протекании времени во внешнем мире), преобразование Лоренца (искажение пространства на околосветовых скоростях) и т.д.

Crayon Physics Deluxe - это 2D-пазл/игра «в песочнице», которая даёт возможность испытать игрокам, что было бы, если бы их рисунки могли превращаться в реальные физические объекты. Задача игрока – помогать шарику собирать звёздочки, рисуя подходящие для его движения поверхности – мосты, переправы, рычаги и т.д. Всё происходит в волшебном мире детского рисунка, где инструментами игрока являются восковые карандашики. Как минимум игра развивает художественное видение и творческие способности, как максимум – позволяет познакомиться с основами механики - гравитацией, ускорением и трением. Для теста на сайте представлена демо-версия , полную версию для PC, Mac и Linux можно приобрести за $19,95, приложения на Android и iOS обойдутся в $2,99.

Впрочем, для тех, кто только приступил к изучению движения тел и различных физических сил, будет также интересно ознакомиться с образовательной видеоигрой Physics Playground. Игра представляет собой площадку, на которой игроку нужно выполнять достаточно простые действия – с помощью зелёного шара сбивать красный воздушный шарик. Вот тут-то и начинается классическая механика: без правильного применения законов Ньютона игрокам вряд ли удастся сконструировать в интерактивной среде механизмы, которые помогут привести в движение шарик. Впрочем, можно пользоваться и интуицией – главное, что на протяжении 80-ти уровней интуитивные знания, позволяющие достигать цели, постепенно приводят к пониманию закономерностей, которые лежат в основе классической механики. Игра разработана компанией Empirical Game , которая занимается созданием развивающих образовательных игр. В открытом доступе её, к сожалению, нет, однако разработчики предлагают связаться с ними, если вас заинтересовал этот продукт. В полной версии можно отслеживать успехи игроков с помощью анализа журналов лог-файла.

«Наука, индустрия развлечений и игра слились в красивом уникальном творческом опыте Newton’s Playground. Манипулируйте Вселенной, создавайте невероятные сочетания планет и запускайте гравитацию», - говорят создатели приложения. Newton’s Playground – интерактивное приложение, которое базируется на моделях, отражающих гравитационную взаимосвязь различных тел. Имитируя гравитационные отношения планет, небольшое приложение Newton’s Playground даёт своим игрокам возможность понаблюдать за взаимодействием сфер, плавающих в открытом пространстве, или же самому поэкспериментировать с массой и плотностью различных тел и создать собственную Солнечную систему. Все расчёты основаны на исследованиях института астрономии Sverre Aarseth"s. Стоимость приложения в App Store – $1,99.

«Algodoo создает новую синергию между наукой и искусством», - гласит надпись на одной из страниц игры. Algodoo – это уникальная платформа 2D-моделирования физических экспериментов от Algoryx Simulation AB . С помощью мультяшных образов и интерактивных инструментов Algodoo позволяет создавать удивительные изобретения, разрабатывать игры для использования в классе или специальные эксперименты для лабораторных занятий по физике. В процессе своих естествоиспытаний и создания различных механизмов участники игры могут использовать жидкости, пружины, шарниры, двигатели, световые лучи, различные индикаторы, оптику и линзы. Моделируя различные конструкции и меняя параметры, игроки изучают трение, преломление, силу тяжести и т.д. Для новичков на сайте представлено подробное руководство , а также создан канал Youtube , на котором можно посмотреть десятки видео по теме. Для Windows и Mac доступны бесплатные версии игры, приложение для iPad стоит $4,99.

Autodesk ForceEffect – приложение для инженеров, которые занимаются различного рода проектированием. С помощью Autodesk ForceEffect можно делать инженерные расчёты прямо на мобильном устройстве. Это существенно облегчает работу по дизайну на стадии создания концепции, так как мгновенно определяет жизнеспособность конструкции. Впрочем, приложение будет интересно и тем, кто хотел бы узнать, как различные силы влияют на объекты. Таким энтузиастам вместо схемы дома для эксперимента можно взять обычный велосипед и на основе его фото провести ряд экспериментов, которые покажут, какую нагрузку он способен выдержать и что влияет на равновесие велосипеда. Особенно приятно, что приложение находится в открытом доступе и бесплатно доступно для Android , iOS .

Physion - это бесплатная программа для двумерного моделирования процессов механики и физики, идеально подходящая для образовательных целей.
Используя инструменты имеющиеся в программе, вы можете создавать различные сцены с физическими объектами с демонстрацией их работы. Например, вы можете создать физические тела в виде кругов, прямоугольников, многоугольников, шестерен, цепей, канатов, воздушных шаров и других объектов. Вы также можете соединять эти элементы с помощью пружин, шкивов, шарниров, гвоздей и др. Таким образом, вы можете создавать различные сцены / сценарии, которые легко варьируются от простых образовательных экспериментов до комплексных структур и сложных механизмов.
В программе имеется много фоновых рисунков, текстур и разных предметов (можно легко добавить свои - .jpg,.gif,.png).

Все предметы "оживают", после нажатия кнопки Старт/Пауза - под действием веса тела падают, воздушные шары взмывают вверх, маятники начинают раскачиваться, колеса вращаться, машины едут и т.д. Параметры движения / падения, смена цвета после воздействия и пр. задаются.
После нажатия кнопки Выбрать / Переместить вы можете мышкой воздействовать на предметы (подбрасывать, перетаскивать, ...).
Вы также можете воздействовать / изменять имеющиеся в программе демонстрационные материалы и, даже сохранить свои изменения (лучше Сохранить как... и переименовать, оставляя оригинал без изменений). Для быстрейшего освоения и обучения лучше просмотреть помощь в виде он-лайн видео учебников: Главное меню -> Помощь -> Documentation -> Videos. Все очень наглядно и понятно. На данный момент присутствуют следующие видеоучебники:
- Общее использование - General Usage Tutorial
- Движок программы - Engine Tutorial
- Простой автомобиль - Simple Car Tutorial
- Спутник - Satellite Tutorial
- Лестница Уолкера - Stair Walker Tutorial
- Сценарии событий - Scripting on Events Tutorial
- Логические операции - Boolean Operations Tutorial
Physion также поддерживает сценарии с JavaScript. Это означает, что пользователи могут писать свои собственные скрипты и выполнять их через сценарии Physion"s. Большинство действий, которые выполненяются с помощью пользовательского графического интерфейса, эквивалентны командам JavaScript. Таким образом Physion также может выступать в качестве веселой и дружественной платформы для введения в основные концепции программирования.
Наконец, Physion может быть особенно будет полезна для разработчиков игр, так как они могут использовать его как простой редактор уровней для их игровых платформ.
Выбор языка: Главное меню -> View -> Dock Widgets -> Settings -> Gentral -> Language
Требования: Java (требований на версию не выдвинуто)
Год выхода: May 29, 2011
ОС: Windows XP/Vista/7
Язык интерфейса: мульти / русский
Сайт разработчика.

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

Для примера возьмём простую задачу Коши.
Дано: и . Найти аппроксимированное решение для .

Рассмотрим задачу с геометрической точки зрения и посмотрим на значение и касательную в точке . Из того, что нам дано, имеем и


Мы пока не знаем как выглядит , но мы знаем что возле точки , значение близко к касательной. Теперь постараемся вычислить для маленького значения , воспользовавшись касательной. Для начала попробуем .


Если расписать, то мы приближаем значение следующим образом:

Так, для .
​​
Теперь мы можем продолжить вычислять для других точек. Хотя, конечно, мы нашли не точное значение , но если наше приближённое значение очень близко к точному, то аппроксимированная касательная тоже будет очень близка к действительной!

$$display$$\begin{aligned}​f(t,y(t))&​=y(t)\\​f(0.5,1.5)​&=1.5​​\end{aligned}$$display$$



Далее, продвинемся ещё на единиц вправо по касательной.


Повторим процесс и получим угловой коэффициент касательной :


Процедуру можно проводить рекурсивно и для этого выведем формулу:

Данный численный метод решения дифференциальных уравнений называется методом Эйлера. Для общего случая шаг x += v * delta_t .

В нашем конкретном случае, пошаговое решение выглядит так:

Используя данный метод, результаты удобно представлять в виде таблицы:

Оказывается, у нашей задачи есть красивое аналитическое решение :


Как вы думаете, что произойдёт, если в методе Эйлера уменьшить шаг?


Разница между аппроксимированным и точным решениями уменьшается с уменьшением ! К тому же, вдобавок к уменьшению шага, можно использовать и другие методы численного интегрирования, которые могут привести к лучшему результату, такие как метод средних прямоугольников , метод Рунге-Кутты и метода Адамса .

Настало время кодить!

С таким же успехом как мы вывели математическое представление описания симуляции, мы можем написать реализацию симуляции программно.

Т.к. я больше всего знаком с JavaScript, и мне нравится ясность, которую добавляют в код аннотации, все примеры будут написаны на TypeScript .

А начнём мы с версии, в которой подразумевали, что это одномерный массив чисел, прямо как в нашей математической модели.

Function runSimulation(// y(0) = y0 y0: number, // dy/dt(t) = f(t, y(t)) f: (t: number, y: number) => number, // показывает текущее состояние симуляции render: (y: number) => void) { // Шаг вперёд на 1/60 секунды за тик // Если анимация будет 60fps то это приведёт к симуляции в рельном времени const h = 1 / 60.0; function simulationStep(ti: number, yi: T) { render(yi) requestAnimationFrame(function() { const fi = f(ti, yi) // t_{i+1} = t_i + h const tNext = ti + h // y_{i+1} = y_i + h f(t_i, y_i) const yNext = for (let j = 0; j < y.length; j++) { yNext.push(yi[j] + h * fi[j]); } simulationStep(tNext, yNext) } } simulationStep(0, y0) }
Оперировать с одномерными массивами не всегда удобно, можно абстрагировать функции сложения и умножения процесса симуляции в интерфейс и получить краткую обобщённую реализацию симуляции используя TypeScript Generics .

Interface Numeric { plus(other: T): T times(scalar: number): T } function runSimulation>(y0: T, f: (t: number, y: T) => T, render: (y: T) => void) { const h = 1 / 60.0; function simulationStep(ti: number, yi: T) { render(yi) requestAnimationFrame(function() { // t_{i+1} = t_i + h const tNext = ti + h // y_{i+1} = y_i + h f(t_i, y_i) const yNext = yi.plus(f(ti, yi).times(h)) simulationStep(yNext, tNext) }) } simulationStep(y0, 0.0) }
Положительной стороной данного подхода является возможность сконцентрироваться на основе симуляции: что именно эту симуляцию отличает от любой другой. Используем пример симуляции с двумя объектами, упомянутыми выше:

Код симуляция двух объектов

// Состояние симуляции двух объектов в один тик времени class TwoParticles implements Numeric { constructor(readonly x1: Vec2, readonly v1: Vec2, readonly x2: Vec2, readonly v2: Vec2) { } plus(other: TwoParticles) { return new TwoParticles(this.x1.plus(other.x1), this.v1.plus(other.v1), this.x2.plus(other.x2), this.v2.plus(other.v2)); } times(scalar: number) { return new TwoParticles(this.x1.times(scalar), this.v1.times(scalar), this.x2.times(scalar), this.v2.times(scalar)) } } // dy/dt (t) = f(t, y(t)) function f(t: number, y: TwoParticles) { const { x1, v1, x2, v2 } = y; return new TwoParticles(// dx1/dt = v1 v1, // dv1/dt = G*m2*(x2-x1)/|x2-x1|^3 x2.minus(x1).times(G * m2 / Math.pow(x2.minus(x1).length(), 3)), // dx2/dt = v2 v2, // dv2/dt = G*m1*(x1-x1)/|x1-x2|^3 x1.minus(x2).times(G * m1 / Math.pow(x1.minus(x2).length(), 3))) } // y(0) = y0 const y0 = new TwoParticles(/* x1 */ new Vec2(2, 3), /* v1 */ new Vec2(1, 0), /* x2 */ new Vec2(4, 1), /* v2 */ new Vec2(-1, 0)) const canvas = document.createElement("canvas") canvas.width = 400; canvas.height = 400; const ctx = canvas.getContext("2d")!; document.body.appendChild(canvas); // Текущее состояние симуляции function render(y: TwoParticles) { const { x1, x2 } = y; ctx.fillStyle = "white"; ctx.fillRect(0, 0, 400, 400); ctx.fillStyle = "black"; ctx.beginPath(); ctx.ellipse(x1.x*50 + 200, x1.y*50 + 200, 15, 15, 0, 0, 2 * Math.PI); ctx.fill(); ctx.fillStyle = "red"; ctx.beginPath(); ctx.ellipse(x2.x*50 + 200, x2.y*50 + 200, 30, 30, 0, 0, 2 * Math.PI); ctx.fill(); } // Запускаем! runSimulation(y0, f, render)


Если подшаманить с числами, то можно получить симуляцию орбиты Луны!Симуляция орбиты Луны, 1 пикс. = 2500 км. 1 сек. симуляции равна 1 дню на Земле. Пропорция Луны к Земле увеличена в 10 раз

Столкновения и ограничения

Приведённая математическая модель и в самом деле симулирует физический мир, но в некоторых случаях метод численного интегрирования, к сожалению, ломается.

Представьте симуляцию прыгающего на поверхности мячика.

Состояние симуляции можно описать так:

Где это высота мяча над поверхностью, а его скорость. Если отпустить мяч с высоты 0.8 метра, то получим:

Если изобразить график , то получим нечто следующее:


Во время падения мяча производная функции вычисляется достаточно легко:

С ускорением свободного падения, .

Но что произойдёт, когда мяч коснётся поверхности? То, что мяч достиг поверхности мы можем узнать по . Но при численном интегрировании, в один момент времени мяч может находиться над поверхностью, а уже в следующий под ней: .

Можно было бы решить эту задачу путём определения момента столкновения . Но даже если этот момент найти, как определить ускорение так, чтобы оно менялось в противоположную сторону.

Можно, конечно, определить столкновение в ограниченном промежутке времени и применить другую силу на этот отрезок времени , но гораздо легче определить дискретную константу ограничивающую симуляцию.

А чтобы уменьшить величину проницания мячом поверхности, можно за один тик вычислять сразу несколько шагов симуляции. В совокупности с этим, код нашей симуляции изменится так:

Function runSimulation>(y0: T, f: (t: number, y: T) => T, applyConstraints: (y: T) => T, iterationsPerFrame: number, render: (y: T) => void) { const frameTime = 1 / 60.0 const h = frameTime / iterationsPerFrame function simulationStep(yi: T, ti: number) { render(yi) requestAnimationFrame(function () { for (let i = 0; i < iterationsPerFrame; i++) { yi = yi.plus(f(ti, yi).times(h)) yi = applyConstraints(yi) ti = ti + h } simulationStep(yi, ti) }) } simulationStep(y0, 0.0) }
И теперь уже можно написать код нашего прыгающего мячика:

Код прыгающего мячика

const g = -9.8; // m / s^2 const r = 0.2; // m class Ball implements Numeric { constructor(readonly x: number, readonly v: number) { } plus(other: Ball) { return new Ball(this.x + other.x, this.v + other.v) } times(scalar: number) { return new Ball(this.x * scalar, this.v * scalar) } } function f(t: number, y: Ball) { const { x, v } = y return new Ball(v, g) } function applyConstraints(y: Ball): Ball { const { x, v } = y if (x <= 0 && v < 0) { return new Ball(x, -v) } return y } const y0 = new Ball(/* x */ 0.8, /* v */ 0) function render(y: Ball) { ctx.clearRect(0, 0, 400, 400) ctx.fillStyle = "#EB5757" ctx.beginPath() ctx.ellipse(200, 400 - ((y.x + r) * 300), r * 300, r * 300, 0, 0, 2 * Math.PI) ctx.fill() } runSimulation(y0, f, applyConstraints, 30, render)


Внимание разработчикам!

Хоть у такой модели есть свои плюсы, она не всегда ведёт к производительным симуляциям. По мне, такой фреймворк полезен для представления поведения симуляции, даже если в ней происходит много чего лишнего.

До скорого!

Я нахожу пересечение математики, физики и программирования чем-то действительно впечатляющим. Создание работающей симуляции, её запуск и рендеринг это некий особенный вид чего-то из ничего .

На всё изложенное меня вдохновили материалы лекции SIGGRAPH, точно так же как и в симуляции жидкости . Если хотите найти более исчерпывающую информацию о вышеизложенном, то взгляните на материалы курса SIGGRAPH 2001 «Введение в физическое моделирование» . Привожу ссылку на курс 1997 года, т.к. Pixar похоже удалила версию 2001.

Только зарегистрированные пользователи могут участвовать в опросе. , пожалуйста.

Algodoo - программа-конструктор для симуляции/анимации механических движений объектов двухмерного физического мира. Пользователю доступны инструменты для создания объектов любой формы, для задания им физических и кинетических параметров, для управления операциями над объектами как в статике, так и в динамике. С помощью этой программы можно создавать интерактивные уроки по физике, игры, симуляторы механических устройств... и просто с любопытством наблюдать за поведением объектов в зависимости от внешних воздействий. Для продвинутых авторов сцен есть возможность обогатить функционал с помощью скриптов.

Создание объектов

ИНСТРУМЕНТЫ ДЛЯ РИСОВАНИЯ

Sketch Tool - Карандаш - позиционируется как универсальный инструмент для рисования, заменяющий другие. На самом деле, в этом утверждении есть некоторое лукавство, т.к. для каждого типа геометрии лучше выбирать свой наиболее подходящий инструмент, а их несколько. Да, Карандашом можно нарисовать любую линию и любой контур, но будет ли это красиво, например круг? Разработчики предусмотрели для Карандаша рисования прямых линий - с зажатой клавишей Shift . Карандаш всегда рисует замкнутые контур, даже если он не был замкнут пользователем.
Knife - Нож - служит для вырезания участка из другой фигуры. После работы Ножом вырезанный участок сразу не пропадает, надо его выделить и удалить клавишей Del .
Brush - Кисть - работает аналогично Карандашу, но в отличие от Карандаша ей можно регулировать толщину линии. Также в отличие от Карандаша Кисть не рисует замкнутые контуры.
Eraser - Стерка - аналогична Ножу, но имеет регулируемую толщину.
Polygon - Полигоны - большой разница с Карандашом не заметил. Ну еще можно этим инструментом объект выделить, повращать (с зажатой ПКМ), поперетаскивать (с жажатой ЛКМ).
Gear - Шестеренка - рисование зубчатых кругов. Красивые и функциональные фигуры получаются. Можно перед рисование настроить размер зубцов и от этого будет зависеть их количество. Возможны внешние и внутренние шестеренки.
Box - Прямоугольник - рисовние прямоугольников. В этом простом инструменте один параметр Select by incircling , отметка которого позволяет этому инструменту также выделять объекты при обводке нескольких объектов.
Circle - Круг - прост и понятен как голый круг.
Plane - Грань - создание бесконечных полов, стен, потолков с целью, чтобы объекты в раже своей динамики не выезжали, не вылетали и не проваливались в никуда.

ИНСТРУМЕНТЫ ДЛЯ СОЕДИНЕНИЯ И СКРЕПЛЕНИЯ

Chain - Цепь - служит для соединения объектов цепью или веревкой, прочность и размер звеньев которых настраиваются.
Spring - Пружина - после сединения двух объектов пружиной по ПКМ (правая клавиша мыши) на пружине можно вызвать контекстное меню пружины и отрегулировать ее длину, а также параметры жесткости и затухания.
Fixate - Фиксатор - просто сделать объект или объекты под этим маркером неподвижными во время анимации сцены.
Axle - Ось - для скрепления двух объектов осью, на которой объект будет вращаться. Потом эту ось можно преобразовать в моторчик и задать ему направление движения, в том числе с помощью горячих клавиш зрителя.

Создание уникального объекта

Если вы уже наигрались с арсеналом встроенных инструментов рисования объектов, то вам захочется иметь объект с нестандартной геометрией и текстурой. Это возможно и несложно:
- Сначала надо подготовить в графическом редакторе нужную фигуру и сохранить ее в виде PNG файла с прозрачным фоном.
- Затем уже в Algodoo загрузить эту фигуру на сцену:
- - Нарисовать любой замкнутый контур, например, круг;
- - Выделить его и нажать кнопку справа вверху;
- - Нажать кнопку в открывшемся окне настройки интерфейса фигуры;
- - Откроется менеджер файлов (не ахти какой удобный) - в нем надо выбрать на диске нужный PNG файл.
- Этим файлом будет залит наш круг;
- В окне настройки интерфейса фигуры нажать кнопку .
Ву-а-ля, дело сделано. Правда, не до конца и с оговорками, если дело касается фигуры, состоящей из отдельных кусков. В этом случае, во-первых, надо объедить фигуры в группу - с помощью ПКМ вызвать контекстное меню и выбрать Selection > Group . Теперь в статике вы сможете таскать и трансформировать фигуру как единое целое. Но стоит вам запустить анимацию, как фигура упадет и рассыпется на составные куски. Как этого избежать я еще не нашел, т.к. увлекся программой совсем недавно.
Еще одна заметка по текстуре. Её внутри фигуры можно передвигать, вращать, масштабировать - для этого существует специальный инструмент , который хорошо слушается мыши:
- Передвигать - с нажатой ЛКМ;
- Вращать - с нажатой ПКМ.
- Мастабировать - колёсиком мыши.

Сцена и ее анимация

После того, как объекты нарисованы, расставлены по своим местам, снабжены моторчиками, пружинами... осталось нажать на кнопку внизу на панельке управления сценой и всё придет в движение (при правильном планировании). На самом деле для отладки эту кнопку (которую заменяет клавиша [Пробел]) вы будете нажимать постоянно и на ранних этапах. Что еще можно сказать относительно сцены:
- передвигать сцену - нажать кнопку на нижней панельке и с зажатой ЛКМ передвигать;
- изменять масштаб - крутить колесико мыши с зажатой клавишей Crtl или кнопкой на нижней панельке;
- регулировать скорость анимации - при нажатии кнопки над ней появляется слайдер для этого;
- включать/открючать гравитацию - кнопкой на панельке;
- регулировать направление и силу ветра - кнопкой на панельке;
- показывать вспомогательную сетку, которая может быть полезной в статичном положении сцены для более точного позиционирования объектов - для этого используйте кнопку на нижней панельке - одиночный клик включает сетку, а двойной клик показывает окно настройки параметров сетки.
- отменить действия - стандартные кнопки на панельке.

Англо-русский словарик физических терминов

Angle - угол
Area - площадь
Attraction - притяжение (объектов между собой)
Collision - столкновение (в практике программы принадлежность объектов к тем или иным слоям, Collision Layer, влияет на то, какие объекты должны между собой сталкиваться, а какие нет)
Density - плотность
Energy - энергия
Force - сила
Freeze - заморозить
Friction - трение
Gravity - гравитация (притяжение Земли)
Immortal - бессмертный (свойство объекта, благодаря которому его не может убить Killer)
Killer - убийца (свойство объекта, благодаря которому он уничтожает все не Immortal объекты, к которым прикасается)
Liquify - жидкость (любую фигуру можно превратить в жидкость)
Mass - масса
Mirror - зеркало
Momentum - импульс, количество движения
Plot - график изменения во времени тех или иных физических характеристик объекта
Refractive index - коэффициент преломления
Restitution - восстановление (в практике программы это "резиновость", которая влияет на отскок объекта после соударения с препятствием)
Speed - скорость
Spongify - придуманный авторами программы тип объекта, по физическим свойствам схожий с губкой или плюшевой игрушкой
Strength - прочность
Velocity - скорость