using System; namespace IStation.Unit { //恒定不变的坐标系 public class ConstantAxis { public double Calc(double v) { return v; } public double RevCalc(double v) { return v; } } //log10的坐标系 public class Log10Axis { public double Calc(double v) { return Math.Log10(v); } public double RevCalc(double v) { return Math.Pow(10, v); } } //乘以系数的坐标系 public class CoefficientAxis { private double _coeff = 1; public CoefficientAxis(double coeff) { if (coeff == 0) return; this._coeff = coeff; } public double GetCoeff() { return this._coeff; } public double Calc(double v) { if (_coeff == 1) return v; var trn_v = v * _coeff; if (trn_v > 8) { var int_trn_v = Math.Round(trn_v, 0); if (Math.Abs(int_trn_v - trn_v) < 0.02) trn_v = int_trn_v; } return trn_v; } public double RevCalc(double v) { if (_coeff == 1) return v; var trn_v = v / _coeff; if (trn_v > 8) { var int_trn_v = Math.Round(trn_v, 0); if (Math.Abs(int_trn_v - trn_v) < 0.02) trn_v = int_trn_v; } return trn_v; } } }