11.5. Ограничения В некоторых приложениях недостаточно сформировать множество частиц, задать их исходное состояние, смоделировать внешнее воздействие и затем смотреть, как ведет себя система "в свободном полете". Особенно это касается приложений, в которых отдельные объекты могут сталкиваться. Хотя поведение объекта, который отскакивает от стены, также подчиняется законам Ньютона, построить систему моделирования соударений на таком принципе не удается (по крайней мере на существующих аппаратных средствах общего назначения) из-за большого количества необходимых вычислений. Вместо этого гораздо эффективнее ввести в модель ряд ограничений на состояния объектов, например запретить объектам "проникать" друг в друга. Эти ограничения хранятся и обрабатываются отдельно от общих правил поведения частиц, описываемых дифференциальными уравнениями.
Применительно к элементам системы частиц можно выделить две группы ограничений. Жесткие ограничения (hard constraints) должны соблюдаться в обязательном порядке. Например, мяч должен обязательно отскочить от стены. Ни при каких обстоятельствах он не может "пройти сквозь стену" и выскочить с другой стороны. Мягкие ограничения (soft constraints) не являются обязательными - их соблюдение скорее желательно. Например, можно пожелать, чтобы частицы по возможности не приближались друг к другу на расстояние, меньшее заданного, как это реализуется в сетке частиц.
11.5.1. Столкновения Хотя жесткие ограничения общего вида довольно сложно встроить в физическую модель, существуют отдельные классы ограничений, которые можно реализовать на уровне модели системы точечных масс. К таковым, в частности, относятся ограничения, связанные со столкновениями. Задача моделирования столкновений распадается на две подзадачи: обнаружение столкновения и реакция на столкновение. Предположим, что в системе частиц с точечной массой между частицами действуют силы отталкивания, а потому частицы друг с дру11.5. Ограничения гом не сталкиваются. Возможно только столкновение частиц с внешними геометрическими объектами. Если в системе имеется п частиц и система погружена в среду из т многоугольников, то на каждом шаге расчета состояния системы нужно проверять возможность столкновения любой частицы с любым многоугольником.