using MetroGauges.General;
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace MetroGauges.Model
{
public class DataModel : INotifyPropertyChanged
{
private string _name;
//private bool _isSelected;
private double _x;
private double _y;
private string _strposition;
private double _δYr;
private double _δXr;
//public DataModel(string strPosition, string name, double x, double y)
//{
// _strposition = strPosition;
// _name = name;
// _x = x;
// _y = y;
//}
public string StrPosition
{
get => _strposition;
set
{
if (_strposition == value) return;
_strposition = value;
OnPropertyChanged();
}
}
///
/// 直线设备点位、车辆轮廓点位(用于计算车辆限界和曲线段设备限界)
///
public virtual PositionI Position
{
get;
}
///
/// 车辆限界的点位(用于计算直线设备限界)
///
public virtual PositionII Position2
{
get;
}
//public bool IsSelected
//{
// get => _isSelected;
// set
// {
// if (_isSelected == value) return;
// _isSelected = value;
// OnPropertyChanged();
// }
//}
public double Squa(double x) => x * x;
///
/// 点号
///
public string Name { get => _name; set { _name = value; OnPropertyChanged(); } }
///
/// 小数位数
///
public int decimals = 3;
//原始坐标
public double X
{
get => _x;
set
{
if (_x == value)
{
return;
}
_x = value;
OnPropertyChanged();
}
}
public double Y
{
get => _y;
set
{
//if (_y == value)
//{
// return;
//}
_y = value;
OnPropertyChanged();
}
}
/////
///// 横向平移和倾角产生横向偏移方向相同时,车体横向偏移量
/////
//public double ΔX_BP
//{
// get => _δX_BP;
// set
// {
// _δX_BP = value;
// OnPropertyChanged();
// }
//}
/////
///// 横向平移和倾角产生横向偏移方向相同时,车体竖向向上偏移量
/////
//public double ΔY_BPu
//{
// get => _δY_BPu;
// set
// {
// _δY_BPu = value;
// OnPropertyChanged();
// }
//}
/////
///// 横向平移和倾角产生横向偏移方向相同时,车体竖向向下偏移量
/////
//public double ΔY_BPd
//{
// get => _δY_BPd;
// set
// {
// _δY_BPd = value;
// OnPropertyChanged();
// }
//}
/////
///// 横向平移和倾角产生横向偏移方向相反时,车体横向偏移量
/////
//public double _ΔX_BP
//{
// get => _δX_BP0;
// set
// {
// _δX_BP0 = value;
// OnPropertyChanged();
// }
//}
/////
///// 横向平移和倾角产生横向偏移方向相反时,车体竖向向上偏移量
/////
//public double _ΔY_BPu
//{
// get => _δY_BPu0;
// set
// {
// _δY_BPu0 = value;
// OnPropertyChanged();
// }
//}
/////
///// 横向平移和倾角产生横向偏移方向相反时,车体竖向向下偏移量
/////
//public double _ΔY_BPd
//{
// get => _δY_BPd0;
// set
// {
// _δY_BPd0 = value;
// OnPropertyChanged();
// }
//}
/////
///// 横向平移和倾角产生横向偏移方向相同,构架横向偏移量
/////
//public double ΔX_t
//{
// get => _δX_t;
// set
// {
// _δX_t = value;
// OnPropertyChanged();
// }
//}
/////
///// 横向平移和倾角产生竖向偏移方向相同,构架竖向向上偏移量
/////
//public double ΔY_tu
//{
// get => _δY_tu;
// set
// {
// _δY_tu = value;
// OnPropertyChanged();
// }
//}
/////
///// 横向平移和倾角产生竖向偏移方向相同,构架竖向向下偏移量
/////
//public double ΔY_td
//{
// get => _δY_td;
// set
// {
// _δY_td = value;
// OnPropertyChanged();
// }
//}
/////
///// 横向平移和倾角产生横向偏移方向相反,横向偏移量
/////
//public double _ΔX_t
//{
// get => _δX_t1;
// set
// {
// _δX_t1 = value;
// OnPropertyChanged();
// }
//}
/////
///// 横向平移和倾角产生竖向偏移方向相反,构架竖向向上偏移量
/////
//public double _ΔY_tu
//{
// get => _δY_tu1;
// set
// {
// _δY_tu1 = value;
// OnPropertyChanged();
// }
//}
/////
///// 竖向平移和倾角产生竖向偏移方向相反,构架竖向向下偏移量
/////
//public double _ΔY_td
//{
// get => _δY_td1;
// set
// {
// _δY_td1 = value;
// OnPropertyChanged();
// }
//}
/////
///// 簧下部分横向偏移量
/////
//public double ΔX_w
//{
// get => _δX_w;
// set
// {
// _δX_w = value;
// OnPropertyChanged();
// }
//}
/////
///// 簧下部分竖向偏移量
/////
//public double ΔY_wd
//{
// get => _δY_wd;
// set
// {
// _δY_wd = value;
// OnPropertyChanged();
// }
//}
/////
///// 轮缘部分竖向偏移量
/////
//public double ΔY_f
//{
// get => _δY_f;
// set
// {
// _δY_f = value;
// OnPropertyChanged();
// }
//}
/////
///// 踏面部分竖向偏移量
/////
//public double ΔY_m
//{
// get => _δY_m;
// set
// {
// _δY_m = value;
// OnPropertyChanged();
// }
//}
/////
///// 受电弓横向偏移量
/////
//public double ΔX_gu
//{
// get => _δX_gu;
// set
// {
// _δX_gu = value;
// OnPropertyChanged();
// }
//}
/////
///// 受电弓竖向向上偏移量(mm),注:柔性接触网和刚性接触网的ΔJvd 25,10, ΔJvw 3.7,6
/////
//public double ΔY_gu
//{
// get => _δY_gu;
// set
// {
// _δY_gu = value;
// OnPropertyChanged();
// }
//}
/////
///// 受流器横向偏移量(mm)
/////
//public double ΔX_sd
//{
// get => _δX_sd;
// set
// {
// _δX_sd = value;
// OnPropertyChanged();
// }
//}
/////
///// 车体在平面曲线外侧几何偏移量(mm)
/////
//public double T_a
//{
// get => _t_a;
// set
// {
// _t_a = value;
// OnPropertyChanged();
// }
//}
/////
///// 车体在平面曲线内侧几何偏移量(mm)
/////
//public double T_i
//{
// get => _t_i;
// set
// {
// _t_i = value;
// OnPropertyChanged();
// }
//}
/////
///// 车体在凸形竖曲线外侧几何偏移量(mm)
/////
//public double _T_a
//{
// get => _t_a0;
// set
// {
// _t_a0 = value;
// OnPropertyChanged();
// }
//}
/////
///// 车体在凹形竖曲线内侧几何偏移量(mm)
/////
//public double _T_i
//{
// get => _t_i0;
// set
// {
// _t_i0 = value;
// OnPropertyChanged();
// }
//}
/////
///// 转向架在平面曲线外侧几何偏移量(mm)
/////
//public double T_ba
//{
// get => _t_ba;
// set
// {
// _t_ba = value;
// OnPropertyChanged();
// }
//}
/////
///// 转向架在平面曲线内侧几何偏移量(mm)
/////
//public double T_bi
//{
// get => _t_bi;
// set
// {
// _t_bi = value;
// OnPropertyChanged();
// }
//}
/////
///// 车体由于轨道参数在整体道床曲线区段的变化引起的设备限界外侧加宽量(mm)
/////
//public double ΔX_ca
//{
// get => _δX_ca;
// set
// {
// _δX_ca = value;
// OnPropertyChanged();
// }
//}
/////
///// 车体由于轨道参数在整体道床曲线区段的变化引起的设备限界内侧加宽量(mm)
/////
//public double ΔX_ci
//{
// get => _δX_ci;
// set
// {
// _δX_ci = value;
// OnPropertyChanged();
// }
//}
/////
///// 车体由于轨道参数在碎石道床曲线区段的变化引起的设备限界外侧加宽量(mm)
/////
//public double _ΔX_ca
//{
// get => _δX_ca0;
// set
// {
// _δX_ca0 = value;
// OnPropertyChanged();
// }
//}
/////
///// 车体由于轨道参数在碎石道床曲线区段的变化引起的设备限界内侧加宽量(mm)
/////
//public double _ΔX_ci
//{
// get => _δX_ci0;
// set
// {
// _δX_ci0 = value;
// OnPropertyChanged();
// }
//}
/////
///// 转向架由于轨道参数在整体道床曲线区段的变化引起的设备限界外侧加宽量(mm)
/////
//public double ΔX_cat
//{
// get => _δX_cat;
// set
// {
// _δX_cat = value;
// OnPropertyChanged();
// }
//}
/////
///// 转向架由于轨道参数在整体道床曲线区段的变化引起的设备限界内侧加宽量(mm)
/////
//public double ΔX_cit
//{
// get => _δX_cit;
// set
// {
// _δX_cit = value;
// OnPropertyChanged();
// }
//}
/////
///// 转向架由于轨道参数在碎石道床曲线区段的变化引起的设备限界外侧加宽量(mm)
/////
//public double _ΔX_cat
//{
// get => _δX_cat0;
// set
// {
// _δX_cat0 = value;
// OnPropertyChanged();
// }
//}
/////
///// 转向架由于轨道参数在碎石道床曲线区段的变化引起的设备限界内侧加宽量(mm)
/////
//public double _ΔX_cit
//{
// get => _δX_cit0;
// set
// {
// _δX_cit0 = value;
// OnPropertyChanged();
// }
//}
/////
///// 车体设备限界在曲线地段外侧总加宽量(mm)
/////
//public double ΔX_a
//{
// get => _δX_a;
// set
// {
// _δX_a = value;
// OnPropertyChanged();
// }
//}
/////
///// 车体设备限界在曲线地段内侧总加宽量(mm)
/////
//public double ΔX_i
//{
// get => _δX_i;
// set
// {
// _δX_i = value;
// OnPropertyChanged();
// }
//}
/////
///// 转向架设备限界在曲线地段外侧总加宽量(mm)
/////
//public double ΔX_at
//{
// get => _δX_at;
// set
// {
// _δX_at = value;
// OnPropertyChanged();
// }
//}
/////
///// 转向架设备限界在曲线地段内侧总加宽量(mm)
/////
//public double ΔX_it
//{
// get => _δX_it;
// set
// {
// _δX_it = value;
// OnPropertyChanged();
// }
//}
/////
///// 对称时车体横向总加宽量
/////
//public double ΔX
//{
// get => _δX;
// set
// {
// _δX = value;
// OnPropertyChanged();
// }
//}
/////
///// 设备限界在曲线地段总加高量(mm)
/////
//public double ΔY_jg
//{
// get => _δY_jg;
// set
// {
// _δY_jg = value;
// OnPropertyChanged();
// }
//}
/////
///// 建筑限界曲线外侧宽度(mm)
/////
//public double B_a
//{
// get => _b_a;
// set
// {
// _b_a = value;
// OnPropertyChanged();
// }
//}
/////
///// 建筑限界曲线内侧宽度(mm)
/////
//public double B_i
//{
// get => _b_i;
// set
// {
// _b_i = value;
// OnPropertyChanged();
// }
//}
/////
///// A1 型车和B1 型车限界曲线地段矩形隧道建筑限界高度(mm)
/////
//public double B_u
//{
// get => _b_u;
// set
// {
// _b_u = value;
// OnPropertyChanged();
// }
//}
/////
///// A2 型车和B2 型车限界曲线地段矩形隧道建筑限界高度(mm)
/////
//public double _B_u
//{
// get => _b_u0;
// set
// {
// _b_u0 = value;
// OnPropertyChanged();
// }
//}
///
/// 计算限界的横坐标
///
public double Xr=> X + ΔXr;
//{
// get => _xr;
// set
// {
// _xr = X + ΔXr;
// _xr = value;
// OnPropertyChanged();
// }
//}
///
/// 计算限界的纵坐标
///
public double Yr=> Y + ΔYr;
//{
// get => _yr;
// set
// {
// _yr = Y + ΔYr;
// _yr = value;
// OnPropertyChanged();
// }
//}
///
/// 限界横向偏移总和
///
public double ΔXr
{
get => _δXr;
set
{
_δXr = value;
OnPropertyChanged();
}
}
///
/// 限界竖向偏移总和
///
public double ΔYr
{
get => _δYr;
set
{
_δYr = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}