namespace Yw.WinFrmUI.Phart.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;
|
}
|
}
|
}
|