> 백엔드 개발 > C++ > C#에서 점이 다각형 내부에 있는지 확인하는 방법은 무엇입니까?

C#에서 점이 다각형 내부에 있는지 확인하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-04 06:24:43
원래의
933명이 탐색했습니다.

How to Determine if a Point Lies Inside a Polygon in C#?

C#에서 다각형 내 점 위치 결정

다각형으로 작업할 때 일반적인 작업은 주어진 점이 다각형 내에 있는지 확인하는 것입니다. 경계. 이 기사에서는 외부 라이브러리에 의존하지 않고 C#에서 이 기능을 구현하는 방법을 살펴보겠습니다.

우리의 접근 방식은 두 단계로 구성됩니다.

1. 외부 경계 계산:

먼저 정점의 최소 및 최대 X 및 Y 좌표를 찾아 다각형의 외부 경계를 정의합니다. 이는 점이 다각형의 경계 상자 내에 있는지 빠르게 판단하는 데 도움이 됩니다.

2. 점 포함 확인:

점이 실제로 다각형 내부에 있는지 확인하기 위해 "IsPointInPolygon" 알고리즘을 사용합니다. 이 알고리즘은 다각형의 정점을 반복하여 점이 각 정점 쌍을 연결하는 선의 왼쪽 또는 오른쪽에 있는지 확인합니다. 점이 지속적으로 이 선의 같은 쪽에 있으면 다각형 내부에 있는 것으로 결정됩니다.

다음은 C#에서 알고리즘을 구현한 예입니다.

public bool IsPointInPolygon(Point[] polygon, Point point)
{
    bool result = false;
    int j = polygon.Length - 1;
    for (int i = 0; i < polygon.Length; i++)
    {
        if (polygon[i].Y < point.Y && polygon[j].Y >= point.Y || 
            polygon[j].Y < point.Y && polygon[i].Y >= point.Y)
        {
            if (polygon[i].X + (point.Y - polygon[i].Y) /
                (polygon[j].Y - polygon[i].Y) *
                (polygon[j].X - polygon[i].X) < point.X)
            {
                result = !result;
            }
        }
        j = i;
    }
    return result;
}
로그인 후 복사

다음과 같습니다. 이러한 단계를 통해 C# 및 WinForms만 사용하여 주어진 점이 다각형 내에 위치하는지 여부를 효율적으로 확인할 수 있습니다.

위 내용은 C#에서 점이 다각형 내부에 있는지 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿