Skip to main content

1. 물리 엔진을 사용하는 이유

  • 지금까지 우리는
    1. 물리학 세계의 기본적인 이론을 살펴보았습니다.(벡터란? 힘이란? 진동이란? 등)
    2. 이론을 기반으로 기본적인 수학과 알고리즘을 살펴보았습니다.
    3. 객체 지향적인 방법으로 p5에서 알고리즘을 구현했습니다.
  • 물리 엔진 라이브러리 대신 기초적인 개념을 처음부터 배우는 이유는,
    • 기초 물리 개념을 이해하지 못하면 라이브러리 사용이 어렵습니다.
    • 라이브러리가 단순화 하는 것은 아닙니다.
    • 창의적인 세계를 구축하기 위해서는 기본적인 것을 이해해야 합니다.
  • 이 장은 자바스크립트용 오픈소스 물리 엔진 라이브러리인 Matter.jsToxiclibs.js에 대해 알아봅니다.

물리 엔진의 유용성

  • 러닝 커브가 있지만, 이러한 라이브러리를 사용하는 이유가 있습니다.
  • 지금까지 힘과 동작을 다루었지만, 물리 시뮬레이션에서 중요한 개념인 충돌 에 대해서는 다루지 않았죠.
  • 충돌을 처리하기 위해서는, 다음 질문을 해결해야 합니다.
    1. 두 물체가 충돌(혹은 겹침)했다는 것을 어떻게 확인할 것인가?
    2. 두 물체의 충돌 후 속도는 어떻게 할 것인가?
  • 1번은 간단히 해결할 수 있습니다. 두 원 사이의 거리가 각각의 반지름을 합한 것보다 작으면 충돌이 일어납니다.
  • 2번은 다소 복잡합니다. 다각형일 때는 특히 그렇죠.
  • 라이브러리를 이용하면 이러한 복잡성을 해결하고 우리가 원하는 코드를 빠르게 작성할 수 있습니다.
Box2D

이외에도 C++로 작성돼 앵그리 버드에 사용된 Box2D 등 다른 라이브러리가 존재합니다. 이 라이브러리는 픽셀 대신 m, kg, 초 등 현실 세계의 단위를 사용한 진정한 물리 엔진입니다. 그러나 우리가 다루는 픽셀 세계로 변환하려면 복잡한 코드가 필요합니다. 따라서 자바스크립트를 사용할 때는 Matter.js와 같은 라이브러리가 더 편리할 거예요.