728x90
반응형
728x170
▶ Point 클래스 : 다각형 내부 위치 여부 구하기 예제
Point[] polygonPointArray = new Point[]
{
new Point(100, 100),
new Point(150, 130),
new Point(120, 170),
new Point(90 , 150),
new Point(100, 100)
};
Point point = new Point(100, 150);
bool result = IsPointInPolygon(polygonPointArray, point);
300x250
▶ Point 클래스 : 다각형 내부 위치 여부 구하기
#region 다각형 내부 위치 여부 구하기 - IsPointInPolygon(polygonPointArray, point)
/// <summary>
/// 다각형 내부 위치 여부 구하기
/// </summary>
/// <param name="polygonPointArray">다각형 포인트 배열</param>
/// <param name="point">포인트</param>
/// <returns>다각형 내부 위치 여부</returns>
public bool IsPointInPolygon(Point[] polygonPointArray, Point point)
{
Point point1;
Point point2;
bool inside = false;
if(polygonPointArray.Length < 3)
{
return inside;
}
Point oldPoint = new Point
(
polygonPointArray[polygonPointArray.Length - 1].X,
polygonPointArray[polygonPointArray.Length - 1].Y
);
for(int i = 0; i < polygonPointArray.Length; i++)
{
Point newPoint = new Point(polygonPointArray[i].X, polygonPointArray[i].Y);
if(newPoint.X > oldPoint.X)
{
point1 = oldPoint;
point2 = newPoint;
}
else
{
point1 = newPoint;
point2 = oldPoint;
}
if((newPoint.X < point.X) == (point.X <= oldPoint.X) && (point.Y - (long) point1.Y)*(point2.X - point1.X) < (point2.Y - (long) point1.Y)*(point.X - point1.X))
{
inside = !inside;
}
oldPoint = newPoint;
}
return inside;
}
#endregion
728x90
반응형
그리드형(광고전용)
'C# > WinForm' 카테고리의 다른 글
[C#/WINFORM/.NET6] DataGridView 클래스 : 셀 색상 설정하기 (0) | 2022.08.25 |
---|---|
[C#/WINFORM] Control 클래스 : 컨트롤 이벤트 제거하기 (0) | 2022.08.24 |
[C#/WINFORM/.NET6] Point 클래스 : 다각형 내부 위치 여부 구하기 (0) | 2022.08.20 |
[C#/WINFORM/.NET6] Point 클래스 : 다각형 내부 위치 여부 구하기 (0) | 2022.08.20 |
[C#/WINFORM/.NET6] Point 클래스 : 다각형 내부 위치 여부 구하기 (0) | 2022.08.20 |
[C#/WINFORM] ListView 클래스 : RetrieveVirtualItem 이벤트를 사용해 대용량 데이터 조회하기 (0) | 2022.07.20 |
[C#/WINFORM] 고품질 이미지 크기 변경하기 (0) | 2022.07.05 |
[C#/WINFORM/.NET6] FontFamily 클래스 : GenericMonospace 정적 속성을 사용해 고정 폭 폰트 만들기 (0) | 2022.07.04 |
[C#/WINFORM/.NET6] Application 클래스 : ProductVersion 정적 속성을 사용해 프로그램 버전 구하기 (0) | 2022.06.21 |
[C#/WINFORM/.NET6] SoundPlayer 클래스 : PlaySync 메소드를 사용해 비프음 만들기 (0) | 2022.06.10 |
댓글을 달아 주세요