와글와글 데이터 시각화를 위한 2차원 배치 물리엔진 만들기

2차원 데이터 시각화를 해봅시다.

문제의 발생과 접근

데이터 시각화, 기술적인 도전이란 무엇일까?

문제 접근, 탐구와 이해를 선호합니다.

2차원 배치 알고리즘

image (팀원분의 달팽이 순회로 2차원 사각형 적재 알고리즘 설계)

우리 버블 차트로 바꿉시다.

image (버블차트 예시)

물리엔진의 도입

레퍼런스 라이브러리 찾아보기

image (circlepacker 라이브러리 - 내부적으로 물리엔진이 있다.)

연산만 하게 만듭시다.

그럼 이제 물리엔진을 만들어봅시다.

UI를 먼저 그리기, 프론트엔드의 장점

image

물리엔진의 시작, 속도를 만들기

203851155-26e145d2-f7d7-44b8-b95d-f45263007d71

자연스러운 움직임을 위해 힘을 만들기

수학과 과학의 도움을 받기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
  caculateCollisionScala(
    speedA: number,
    speedB: number,
    massA: number,
    massB: number,
    repulsiveForce: number,
  ) {
    return (
      (speedA +
        (2 * massB * (speedB - speedA)) / (massA + massB) +
        repulsiveForce * REPULSIVE_COEFFICIENT) *
      COLLISION_COEFFICIENT
    );
  }

참고자료 : 물체의 운동과 2차원 충돌

문제 발생

중력 구현

204280957-1cda2268-5290-414f-a50b-a91830ef28cf

결과

결과물

image2

성능 비교

의의