첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170
using System.Collections.Generic;
using System.Drawing;

#region 부호 있는 다각형 영역 구하기 - GetSignedPolygonArea(sourcePointList)

/// <summary>
/// 부호 있는 다각형 영역 구하기
/// </summary>
/// <param name="sourcePointList">소스 포인트 리스트</param>
/// <returns>부호 있는 다각형 영역</returns>
public float GetSignedPolygonArea(List<PointF> sourcePointList)
{
    int pointCount = sourcePointList.Count;

    PointF[] pointArray = new PointF[pointCount + 1];

    sourcePointList.CopyTo(pointArray, 0);

    pointArray[pointCount] = sourcePointList[0];

    float area = 0;

    for(int i = 0; i < pointCount; i++)
    {
        area += (pointArray[i + 1].X - pointArray[i].X) * (pointArray[i + 1].Y + pointArray[i].Y) / 2;
    }

    return area;
}

#endregion
#region 다각형 시계 방향 여부 구하기 - IsPolygonClockwise(sourcePointList)

/// <summary>
/// 다각형 시계 방향 여부 구하기
/// </summary>
/// <param name="sourcePointList">소스 포인트 리스트</param>
/// <returns>다각형 시계 방향 여부</returns>
public bool IsPolygonClockwise(List<PointF> sourcePointList)
{
    return (GetSignedPolygonArea(sourcePointList) < 0);
}

#endregion
728x90
반응형
그리드형
Posted by 사용자 icodebroker

댓글을 달아 주세요