코스모스 공작소

[Unity] 다각형의 중점 구하기 본문

프로그래밍/Unity

[Unity] 다각형의 중점 구하기

cosmos_studio_ 2023. 7. 22. 16:37
반응형

안녕하세요! 오늘은 다각형의 중점을 구하는 방법에 대해 알아보겠습니다. 먼저 구하는 공식을 알아보겠습니다.

증명 과정은 중요하지만 다루기엔 좀 길기에 생략하도록하겠습니다.

 

** 그리고 이번 설명에서는 점이 Z 축 고정으로 가정하고 작업해보도록하겠습니다.

 

1. 다각형의 중점 공식

 먼저 다각형의 중점 공식을 알아보도록하겠습니다.

A는 다각형의 면적이고 n 은 다각형의 꼭지점의 개수입니다. 이제 각 꼭지점의 좌표들을 구하고 필요한 다각형의 면적을 구해야합니다.

2. 다각형의 면적

다각형의 면적 공식입니다. 여기 값들을 위 중점 공식의 A에 들어갈 값입니다.

 

3. 코드

Vector3 CalculatePolygonCenteroid( Vector3[] pList )
{
    Vector3 vCenter = Vector3.one;
    float sum = 0;
    float temp_x = 0;
    float temp_y = 0;

    for (int i = 0; i < pList.Length; i++)
    {
        int j = i + 1;

        if (i + 1 >= pList.Length)
        {
            j = 0;
        }	// 마지막 항은 다각형의 첫번째 점과 이어야 하므로 따로 처리해줍니다.

        float temp = (pList[i].x * pList[j].y) - (pList[j].x * pList[i].y);

        temp_x += (pList[i].x + pList[j].x) * temp;
        temp_y += (pList[i].y + pList[j].y) * temp;

        sum += temp;
    }

    float temp_sum = (1.0f / sum);

    temp_x *= temp_sum;
    temp_y *= temp_sum;

    vCenter = new Vector3(temp_x / 3f, temp_y / 3f, 0);

    return vCenter;
}

 

4. 결과

빨각색 선이 모이는 점이 중점으로 구해진 점입니다. 여기까지 다각형의 중점을 구하는 공식을 이용해서 중점을 구하는 방법에 대해 알아보았습니다. 감사합니다!

반응형
Comments