Вычислите движение при помощи матриц

Модель sf_pool является примером использования матриц в диаграмме Stateflow, чтобы моделировать начало на бильярдном столе.

Как образцовые работы

Модель состоит из следующих блоков.

Компонент моделиОписание
График InitИнициализирует положение и скорость бильярдного шара.
Объедините графикВычисляет двумерную динамику каждого шара на бильярдном столе.
Блок PlotАнимирует движение каждого шара во время начала.
Осциллограф VelОтображает скорость каждого шара во время начала.
ЧасыПредоставляет мгновенное время симуляции блоку Plot.

Устройство хранения данных двумерных данных в матрицах

Чтобы моделировать начало, график Пула хранит двумерные данные в матрицах.

Сохранить значения для...Использование графика Пула...
Мгновенное положение каждого шара15 2 матричный p
Мгновенная скорость каждого шара15 2 матричный v
Трение и силы взаимодействия, действующие на каждый шар15 2 матричный v_dot
Булевы данные на том, являются ли какие-либо два шара в контакте15 15 матричный ball_interaction

Вычисление двумерной динамики каждого шара

График Пула вычисляет движение каждого шара на бильярдном столе с помощью функций MATLAB®, которые выполняют матричные вычисления.

Функция MATLABОписание
frictionForceВычисляет силу трения, действующую на каждый шар.
getBallInteractionВозвращает матрицу булевых данных на том, являются ли какие-либо два шара в контакте.
hasBallInteractionChangedВозвращается 1, если взаимодействия шара изменились и 0 в противном случае.
initBallsИнициализирует положение и скорость каждого шара на бильярдном столе.
interactionForceВычисляет силу взаимодействия, действующую на каждый шар.
isAnyBallGoingToStopВозвращается 1, если какой-либо шар прекратил перемещаться и 0 в противном случае.
isAnyBallNewlyPocketedВозвращается 1, если какой-либо шар был недавно присвоен и 0 в противном случае.
isAnyBallOutOfBoundsВозвращает true, если какой-либо шар выходит за пределы и ложь в противном случае.
nearHoleВозвращает true, если шар около кармана на бильярдном столе и лжи в противном случае.
pocketNewBallsУстанавливает скорость шара к 0, если она была присвоена.
resetBallsPosAndVelСбрасывает положение и скорость любого шара, который выходит за пределы.
updateStopFlagsОтслеживает, которых шары прекратили перемещаться.

Запустите модель

Чтобы запустить модель, выполните эти шаги:

  1. Откройте модель sf_pool.

  2. Запустите симуляцию.

  3. Щелкните где угодно в анимированном бильярдном столе, чтобы задать исходное положение бильярдного шара.

  4. Кликните по различному месту, чтобы задать начальную скорость бильярдного шара.

  5. См., что шары преодолевают бильярдный стол.

Похожие темы