69 lines
1.8 KiB
C#
69 lines
1.8 KiB
C#
// 使用SI单位;车体系X向前、Y向左、逆时针为正,XxxInYyy表示Xxx在Yyy坐标系中。
|
|
namespace MyParking.Shared
|
|
{
|
|
// 二维坐标点,单位为m。
|
|
public readonly struct Point2D
|
|
{
|
|
public Point2D(double xMeters, double yMeters)
|
|
{
|
|
XMeters = xMeters;
|
|
YMeters = yMeters;
|
|
}
|
|
|
|
public double XMeters { get; }
|
|
|
|
public double YMeters { get; }
|
|
|
|
public static Point2D Zero => new Point2D(0.0, 0.0);
|
|
}
|
|
|
|
// 二维位姿,位置单位为m,航向单位为rad。
|
|
public readonly struct Pose2D
|
|
{
|
|
public Pose2D(
|
|
double xMeters,
|
|
double yMeters,
|
|
double yawRadians)
|
|
{
|
|
XMeters = xMeters;
|
|
YMeters = yMeters;
|
|
YawRadians = yawRadians;
|
|
}
|
|
|
|
public double XMeters { get; }
|
|
|
|
public double YMeters { get; }
|
|
|
|
public double YawRadians { get; }
|
|
|
|
public Point2D Position =>
|
|
new Point2D(XMeters, YMeters);
|
|
|
|
public static Pose2D Identity =>
|
|
new Pose2D(0.0, 0.0, 0.0);
|
|
}
|
|
|
|
// 二维刚体速度,线速度单位为m/s,角速度单位为rad/s。
|
|
public readonly struct Twist2D
|
|
{
|
|
public Twist2D(
|
|
double vxMetersPerSecond,
|
|
double vyMetersPerSecond,
|
|
double omegaRadiansPerSecond)
|
|
{
|
|
VxMetersPerSecond = vxMetersPerSecond;
|
|
VyMetersPerSecond = vyMetersPerSecond;
|
|
OmegaRadiansPerSecond = omegaRadiansPerSecond;
|
|
}
|
|
|
|
public double VxMetersPerSecond { get; }
|
|
|
|
public double VyMetersPerSecond { get; }
|
|
|
|
public double OmegaRadiansPerSecond { get; }
|
|
|
|
public static Twist2D Zero =>
|
|
new Twist2D(0.0, 0.0, 0.0);
|
|
}
|
|
}
|