import 'package:fis_measure/interfaces/date_types/point.dart';
import 'package:vid/us/vid_us_visual_area_type.dart';

/// 物理坐标系
abstract class IPhysicalCoordinate {
  /// 将相对坐标点转换为当前坐标中的点
  DPoint convert(DPoint point);

  /// 将当前坐标中的点转换为相对坐标点
  DPoint convertBack(DPoint point);
}

/// 二维物理坐标系
abstract class ITissuePhysicalCoordinate implements IPhysicalCoordinate {
  /// 区域类型
  VidUsVisualAreaType get areaType;

  /// 视觉区域图像下缘到探头表面的距离
  ///
  /// 单位: cm
  double get depthEnd;

  /// 视觉区域图像上边缘到探头表面的距离
  ///
  /// 单位: cm
  ///
  /// [depthStart] 始终小于 [depthEnd]
  double get depthStart;

  /// 图像从右边缘到左边缘，X轴方向角度/距离
  ///
  /// 线性探头 - 距离，单位：cm
  ///
  /// 扇形探头 - 顺时针方向偏移角度，单位：degree
  double get width;

  /// x轴水平维度上，到x轴中心点的偏移距离/角度
  ///
  /// 线性探头 - 距离
  ///
  /// 扇形探头 - 顺时针方向偏移角度，单位：degree
  double get beamPosition;
}

/// 时间轴物理坐标
abstract class ITimeMotionPhysicalCoordiante implements IPhysicalCoordinate {
  /// 水平扫查的时间间隔
  double get sweepSpeed;

  /// 图像上边缘值
  double get max;

  /// 图像下边缘值
  double get min;
}
