[JS] CCW(Counter Clock Wise)

이진규·2024년 4월 24일
post-thumbnail

❗️ 신발끈 공식 - 다각형의 넓이

  • 좌표평면 상에서 꼭짓점의 좌표들을 알 때 다각형의 면적을 구할 수 있는 방법

✅ 삼각형의 신발끈 공식

✅ 다각형의 신발끈 공식

✅ 코드 구현

let sum = 0;
for (let i = 1; i <= N - 1; i++) {
  sum += input[i][0] * input[i + 1][1] - input[i + 1][0] * input[i][1];
}

let answer = sum + input[N][0] * input[1][1] - input[1][0] * input[N][1];

console.log((Math.abs(answer) / 2).toFixed(1));

❗️ CCW 알고리즘 (Counter Clock Wise)

  • 3개의 점 A,B,C가 있을 때 점 3개를 이은 직선의 방향을 알고자 할 때 사용
  • 외적을 이용한 결과값을 통해 방향을 확인

✅ 구현 방법

p1 = (x1,y1) p2 = (x2,y2), p3 = (x3,y3) 일때
p1p2를 이은 선분벡터, p2p3를 이은 선분벡터의 CCW구하기

function CCW(input) {
  let p1 = input[0];
  let p2 = input[1];
  let p3 = input[2];

  return (p2[0] - p1[0]) * (p3[1] - p2[1]) - (p3[0] - p2[0]) * (p2[1] - p1[1]);
}

retrun 값이 -1이면 시계방향 내각 180도 미만
retrun 값이 0이면 내각 180도
retrun 값이 1이면 반시계방향 내각 180도 초과
profile
웹 개발자

0개의 댓글