Народный учебник по OpenGL


Урок 30. Определение столкновений и моделирование законов физики


Collision Detection



Исходный код на котором основан этот урок, взят из моей старой конкурсной работы (ее можно найти на OGLchallenge.dhs.org). Тема называлась “Сумасшедшие столкновения” и моя статья (которая, кстати, заняла первое место :)) была названа Магической Комнатой. Она освещала определение столкновений, моделирование законов физики и эффекты.

 

Определение столкновений


Трудная тема, и честно говоря, я не знаю до сих пор простых подходов для ее решения. Для каждого приложения существуют различные способы нахождения и проверки столкновений. Конечно, существуют обобщенные физические законы и они могут работать с любыми видами объектов, но они очень медленные.


Мы собираемся исследовать алгоритмы, которые очень быстрые, легкие для понимания и до некоторой степени гибкие. К тому же важно и должно быть рассмотрено, что сделать, когда столкновение определено, и то, как тогда перемещать объекты, в соответствии с законами физики. Мы имеет много материала для рассмотрения. Давайте просмотрим, что мы собираемся изучить:


1) Определение столкновений

  • Движущаяся сфера - Плоскость
  • Движущаяся сфера - Цилиндр
  • Движущаяся сфера - движущаяся сфера

 

2) Моделирование законов физики

  • Реакция на столкновение
  • Движение под действием гравитации с использованием уравнения Эйлера

 

3) Специальные эффекты

  • Моделирование взрыва с использованием метода Fin-Tree Billboard
  • Использование звуков с помощью The Windows Multimedia Library (только для Windows)

 

4) Разъяснение кода

  • Код, разделен на 5 файлов

 

Lesson30.cpp

: Основной код для этого учебника

Image.cpp,

Image.h

: Код загрузки текстур

Tmatrix.cpp,

Tmatrix.h

: Классы обработки вращения

Tray.cpp,

Tray.h

: Классы, обрабатывающие операции с лучами

Tvector.cpp,

Tvector.h

: Классы, обрабатывающие операции с векторами


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




- Начало -  - Назад -  - Вперед -