Народный учебник по 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

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

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




          Содержание  Назад  Вперед