Модель 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 | Отслеживает, которых шары прекратили перемещаться. |
Чтобы запустить модель, выполните эти шаги:
Откройте модель sf_pool
.
Запустите симуляцию.
Щелкните где угодно в анимированном бильярдном столе, чтобы задать исходное положение бильярдного шара.
Кликните по различному месту, чтобы задать начальную скорость бильярдного шара.
См., что шары преодолевают бильярдный стол.