<aside> <img src="/icons/bookmark_purple.svg" alt="/icons/bookmark_purple.svg" width="40px" />

목차

</aside>

💡 목표: 참여자 프로필을 타원 위 한점의 좌표로 계산하기

<aside> ✅

1. 타원형 배치 구현

타원형 배치를 구현하기 위해, 좌표 시스템을 사용하여 각 사용자의 위치를 계산합니다.

→ 각 사용자는 타원의 장축과 단축을 기준으로 위치가 결정되며, 이 때 수학적 공식인 타원 방정식을 사용합니다.

1.1. 수학적 개념

384833080-280a450a-49e2-4399-a36a-9262f4d25e70.png

// 참여자 수에 따른 위치를 계산하는 함수
export const calculatePosition = (count: number, shortRadius: number, longRadius: number): [number, number][] => {
  const positions: [number, number][] = [];
  const centerX = 0;
  const centerY = 0;
  const angleDiff = (2 * Math.PI) / count;

  for (let i = 0; i < count; i++) {
    const angle = angleDiff * i;
    const x = centerX + longRadius * Math.sin(angle);
    const y = centerY + shortRadius * Math.cos(angle);
    positions.push([x, y]);
  }

  return positions;
};

사용자 수에 따라 사용자간 배치 각도 계산 → 각도에따라 좌표값 계산

1.2. 위치 계산 로직

사용자가 추가되거나 삭제될 때마다, calculatePosition 함수가 호출되어 사용자의 위치가 재계산됩니다.

성능 최적화