/* * Copyright (c) 2025 LG Electronics Inc. * SPDX-License-Identifier: LicenseRef-LGE-Proprietary */ using VisionCommon; using System.Collections.Generic; namespace VisionAligner { /// /// 얼라인 계산을 담당한다 /// public abstract class Aligner { /// /// 얼라인 정보를 초기화한다 /// public abstract void Clear(); /// /// N-포인트 얼라인을 진행한다 /// /// 패턴 검출 위치 /// 레퍼런스(기준) 위치 /// 좌표계의 Y축 반전 여부 /// 얼라인 결과 public abstract AlignResult Align(List meaPoints, List refPoints, int flipY); /// /// 1-포인트 얼라인을 진행한다 /// /// 패턴 검출 위치 /// 레퍼런스(기준) 위치 /// 좌표계의 Y축 반전 여부 /// 얼라인 결과 public abstract AlignResult Align(DoublePoint meaPoint, DoublePoint refPoint, Angle theta, int flipY); /// /// 외부에서 레시피가 새로 저장된 경우, 레시피를 갱신해준다. /// /// 얼라인 모드 public abstract void UpdateRecipe(AlignMode alignMode); // 레시피가 변경된 경우, 업데이트 /// /// 얼라인 상태가 NG인지 확인 /// /// 얼라인 상태 /// 얼라인 상태가 NG인 여부 public bool IsAlignStatusNG(AlignStatus status) { switch (status) { case AlignStatus.NOT_FOUND: case AlignStatus.ALIGN_LIMIT_OVER: case AlignStatus.RETRY_COUNT_OVER: case AlignStatus.DISTANCE_NG: return true; default: return false; } } } }