using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace IStation.Model
|
{
|
/// <summary>
|
/// 系数的坐标系
|
/// </summary>
|
public class RatioAxisCalculator : IAxisCalculator
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public RatioAxisCalculator() { }
|
|
/// <summary>
|
///
|
/// </summary>
|
public RatioAxisCalculator(double ratio)
|
{
|
this.Ratio = ratio;
|
}
|
|
/// <summary>
|
/// 系数
|
/// </summary>
|
public double Ratio
|
{
|
get { return _ratio; }
|
private set { _ratio = value; }
|
}
|
private double _ratio = 1;
|
|
/// <summary>
|
/// 计算
|
/// </summary>
|
public double Calculate(double v)
|
{
|
if (_ratio == 1)
|
return v;
|
var trn_v = v * _ratio;
|
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;
|
}
|
|
/// <summary>
|
/// 反算
|
/// </summary>
|
public double RevCalculate(double v)
|
{
|
if (_ratio == 1)
|
return v;
|
|
var trn_v = v / _ratio;
|
|
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;
|
}
|
|
}
|
|
}
|