MapEdgeDto.cs 2.71 KB
using System;
using Rcs.Domain.Entities;

namespace Rcs.Application.DTOs
{
    public class MapEdgeDto
    {
        public string? EdgeId { get; set; }

        /// <summary>
        /// 地图ID(外键)
        /// </summary>
        public string? MapId { get; set; }

        public string EdgeCode { get; set; }

        public string FromNode { get; set; }

        public string ToNode { get; set; }

        public string EdgeName { get; set; }

        public double? Length { get; set; }

        public double? Cost { get; set; } = 1d;

        public DateTime? CreatedAt { get; set; }

        public bool Active { get; set; }

        /// <summary>
        /// 是否为曲线
        /// false = 直线
        /// true  = NURBS 曲线
        /// </summary>
        public bool IsCurve { get; set; }

        /// <summary>
        /// 半径
        /// </summary>
        public double? Radius { get; set; }

        /// <summary>
        /// 圆心X
        /// </summary>
        public double? CenterX { get; set; }

        /// <summary>
        /// 圆心Y
        /// </summary>
        public double? CenterY { get; set; }

        // ----------------------
        // NURBS 曲线参数(仅当 IsCurve = true 时有效)
        // ----------------------

        /// <summary>
        /// 曲线阶数(degree)
        /// 常用值:2(二次),3(三次)
        /// </summary>
        public int? Degree { get; set; } = 2;

        /// <summary>
        /// 控制点列表,存储为 JSON
        /// 例如:[{"X":0,"Y":0},{"X":1,"Y":2},{"X":3,"Y":4}]
        /// </summary>
        public List<Point>? ControlPoints { get; set; }

        /// <summary>
        /// 控制点权重,存储为 JSON
        /// 例如:[1.0, 1.0, 1.0]
        /// </summary>
        public List<double>? Weights { get; set; }

        /// <summary>
        /// 节点向量(Knot Vector),存储为 JSON
        /// 长度 = 控制点数量 + Degree + 1
        /// 例如:[0,0,0,1,1,1]
        /// </summary>
        public List<double>? Knots { get; set; }

        /// <summary>
        /// 是否倒车行驶
        /// </summary>
        public bool Regress { get; set; }

        /// <summary>
        /// 最大坐标偏移值 (单位:米)
        /// </summary>
        public double? MaxCoordinateOffset { get; set; }

        /// <summary>
        /// 最大角度偏差值 (单位:度)
        /// </summary>
        public double? MaxAngleDeviation { get; set; }

        /// <summary>
        /// 最高速度 (单位:米/秒)
        /// </summary>
        public double? MaxSpeed { get; set; }
    }

    public class PointDto
    {
        public double X { get; set; }
        public double Y { get; set; }
    }
}