using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HalconDotNet;
namespace DataStruct
{
public class DataStructClass
{
///
/// XYU结果
///
[Serializable]
public class PosXYU
{
public double X;
public double Y;
public double U;
///
/// 将XYU类型转化成格式化字符串
///
///
internal string ToFormatStr()
{
return (X >= 0 ? "+" + X.ToString("0000.000") : X.ToString("0000.000")) + "," + (Y >= 0 ? "+" + Y.ToString("0000.000") : Y.ToString("0000.000")) + "," + (U >= 0 ? "+" + U.ToString("0000.000") : U.ToString("0000.000"));
}
internal string ToShowTip()
{
return X.ToString() + " | " + Y.ToString() + " | " + U.ToString();
}
}
///
/// XYU结果
///
[Serializable]
public class XYU
{
public XYU()
{
_point = new XY();
}
public XYU(double x, double y, double u)
{
_point = new XY();
_point.X = x;
_point.Y = y;
_u = u;
}
private XY _point;
public XY Point
{
get { return _point; }
set { _point = value; }
}
private double _u;
public double U
{
get
{
return Math.Round(_u, 3);
}
set { _u = value; }
}
///
/// 将XYU类型转化成格式化字符串
///
///
internal string ToFormatStr()
{
return (Point.X >= 0 ? "+" + Point.X.ToString("000.000") : Point.X.ToString("000.000")) + (Point.Y >= 0 ? "+" + Point.Y.ToString("000.000") : Point.Y.ToString("000.000")) + (U >= 0 ? "+" + U.ToString("000.000") : U.ToString("000.000"));
// return (X >= 0 ? "+" + X.ToString("000.000") : X.ToString("000.000")) + ";" + (Y >= 0 ? "+" + Y.ToString("000.000") : Y.ToString("000.000")) + ";" + (U >= 0 ? "+" + U.ToString("000.000") : U.ToString("000.000"));
}
///
/// 将XYU类型转化成格式化字符串
///
///
internal string ToFormatStrTwoSpace()
{
return (Point.X >= 0 ? "+" + Point.X.ToString("000.000") : Point.X.ToString("000.000")) + (Point.Y >= 0 ? " +" + Point.Y.ToString("000.000") : Point.Y.ToString("000.000")) + (U >= 0 ? " +" + U.ToString("000.000") : U.ToString("000.000"));
// return (X >= 0 ? "+" + X.ToString("000.000") : X.ToString("000.000")) + ";" + (Y >= 0 ? "+" + Y.ToString("000.000") : Y.ToString("000.000")) + ";" + (U >= 0 ? "+" + U.ToString("000.000") : U.ToString("000.000"));
}
internal string ToShowTip()
{
return Point.X.ToString() + " | " + Point.Y.ToString() + " | " + U.ToString();
}
///
/// 重写 -
///
/// 点1
/// 点2
///
public static XYU operator -(XYU p1, XYU p2)
{
return new XYU(p1.Point.X - p2.Point.X, p1.Point.Y - p2.Point.Y, p1.U - p2.U);
}
///
/// 重写 +
///
/// 点1
/// 点2
///
public static XYU operator +(XYU p1, XYU p2)
{
return new XYU(p1.Point.X + p2.Point.X, p1.Point.Y + p2.Point.Y, p1.U + p2.U);
}
}
[Serializable]
public class XY
{
internal XY() { }
internal XY(double x, double y)
{
this.X = x;
this.Y = y;
}
private double _x;
public double X
{
get
{
return Math.Round(_x, 3);
}
set { _x = value; }
}
private double _y;
public double Y
{
get
{
return Math.Round(_y, 3);
}
set { _y = value; }
}
///
/// 重写 -
///
/// 点1
/// 点2
///
public static XY operator -(XY p1, XY p2)
{
return new XY(p1.X - p2.X, p1.Y - p2.Y);
}
///
/// 重写 +
///
/// 点1
/// 点2
///
public static XY operator +(XY p1, XY p2)
{
return new XY(p1.X + p2.X, p1.Y + p2.Y);
}
///
/// 获得点矢量长度
///
internal double GetDistance
{
get
{
return Math.Sqrt(X * X + Y * Y);
}
}
internal string ToShowTip()
{
return X.ToString() + " | " + Y.ToString();
}
}
[Serializable]
public class Line
{
public Point StartPoint;
public Point EndPoint;
internal string ToShowTip()
{
return StartPoint.Row.ToString() + " | " + StartPoint.Col.ToString() + " | " + EndPoint.Row.ToString() + " | " + EndPoint.Col.ToString();
}
private HTuple _angle;
public double Angle
{
get
{
HOperatorSet.AngleLx(StartPoint.Row, StartPoint.Col, EndPoint.Row, EndPoint.Col, out _angle);
return _angle;
}
}
}
[Serializable]
public class Point
{
public Point() { }
public Point(double x, double y)
{
this.Row = x;
this.Col = y;
}
public double Row;
public double Col;
///
/// 重写 -
///
/// 点1
/// 点2
///
public static Point operator -(Point p1, Point p2)
{
return new Point(p1.Row - p2.Row, p1.Col - p2.Col);
}
///
/// 获得点矢量长度
///
public double GetDistance
{
get
{
return Math.Sqrt(Row * Row + Col * Col);
}
}
public string ToShowTip()
{
return Row.ToString() + " | " + Col.ToString();
}
}
}
}