/*
* 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;
}
}
}
}