using o0.Geometry2D.Float; namespace o0.Project { public class LineIdentified { // 属于的识别批次 public int Batch; // 线段 public Line Line; // 线梯度 public float Gradient; // 线梯度方向, 0 - 180度 public float GradientDegree; // 筛线条时, 计算垂直直线的梯度值 public float ZIMGradient; // 到屏幕中点的距离 public float DistanceToMiddle; // 用于绘制的线, 为null就是不绘制 public Line DrawLine; // 被认为是屏幕的哪条边,-1表示不是屏幕的边,0, 1, 2,3对应 下、右、上、左 public int ScreenLineIndex; public LineIdentified(int batch, Line line, float gradient, float gradientDegree, bool drawAll = false) { Batch = batch; Line = line; Gradient = gradient; GradientDegree = gradientDegree; if (drawAll) DrawLine = line; } public LineIdentified(int batch, (Line line, float gradient, float gradientDegree) lineParams, bool drawAll = false) { Batch = batch; Line = lineParams.line; Gradient = lineParams.gradient; GradientDegree = lineParams.gradientDegree; if (drawAll) DrawLine = lineParams.line; } bool? _isInterLine; // 评估是否是屏幕内部的线 public bool GuessIsInterLine(InterLineGuess guess) { if (_isInterLine == null) _isInterLine = guess.GuessIsLine(this); return _isInterLine.Value; } public void Offset(Vector offset) { Line += offset; } } }