59 lines
3.0 KiB
C#
59 lines
3.0 KiB
C#
using View_by_Distance.Shared.Models;
|
|
using View_by_Distance.Shared.Models.Methods;
|
|
|
|
namespace View_by_Distance.Metadata.Models;
|
|
|
|
public class DistanceLimits : IDistanceLimits
|
|
{
|
|
|
|
private int _Days;
|
|
private int _Distance;
|
|
|
|
public double FaceAreaPermyriad { init; get; }
|
|
public double RangeDaysDeltaTolerance { init; get; }
|
|
public double FaceConfidencePercent { init; get; }
|
|
public double FaceDistancePermyriad { init; get; }
|
|
public int SortingMaximumPerFaceShouldBeHigh { init; get; }
|
|
public bool RangeDaysDeltaTargetLessThenUpper { init; get; }
|
|
public double RangeDistanceToleranceUpperLimit { init; get; }
|
|
|
|
public DistanceLimits(DistanceSettings distanceSettings, int? useFiltersCounter = null)
|
|
{
|
|
RangeDistanceToleranceUpperLimit = distanceSettings.RangeDistanceTolerance[2];
|
|
SortingMaximumPerFaceShouldBeHigh = distanceSettings.SortingMaximumPerFaceShouldBeHigh;
|
|
RangeDaysDeltaTargetLessThenUpper = distanceSettings.RangeDaysDeltaTolerance[1] > distanceSettings.RangeDaysDeltaTolerance[2];
|
|
if (useFiltersCounter is null)
|
|
{
|
|
RangeDaysDeltaTolerance = distanceSettings.RangeDaysDeltaTolerance[1];
|
|
FaceConfidencePercent = distanceSettings.FaceConfidencePercent * distanceSettings.RangeFaceConfidence[1];
|
|
FaceAreaPermyriad = distanceSettings.FaceAreaPermyriad * distanceSettings.RangeFaceAreaTolerance[1];
|
|
FaceDistancePermyriad = distanceSettings.FaceDistancePermyriad * distanceSettings.RangeDistanceTolerance[1];
|
|
}
|
|
else
|
|
{
|
|
RangeDaysDeltaTolerance = ((distanceSettings.RangeDaysDeltaTolerance[2] - distanceSettings.RangeDaysDeltaTolerance[0]) * 0.01 * useFiltersCounter.Value) + distanceSettings.RangeDaysDeltaTolerance[1];
|
|
FaceConfidencePercent = (distanceSettings.FaceConfidencePercent * ((distanceSettings.RangeFaceConfidence[2] - distanceSettings.RangeFaceConfidence[0]) * 0.01 * useFiltersCounter.Value)) + distanceSettings.RangeFaceConfidence[1];
|
|
FaceDistancePermyriad = (distanceSettings.FaceDistancePermyriad * ((distanceSettings.RangeDistanceTolerance[2] - distanceSettings.RangeDistanceTolerance[0]) * 0.01 * useFiltersCounter.Value)) + distanceSettings.RangeDistanceTolerance[1];
|
|
FaceAreaPermyriad = (distanceSettings.FaceAreaPermyriad * ((distanceSettings.RangeFaceAreaTolerance[2] - distanceSettings.RangeFaceAreaTolerance[0]) * 0.01 * useFiltersCounter.Value)) + distanceSettings.RangeFaceAreaTolerance[1];
|
|
}
|
|
}
|
|
|
|
string IDistanceLimits.GetCounts()
|
|
{
|
|
string result;
|
|
List<(int Value, string Name)> results =
|
|
[
|
|
new(_Days, nameof(_Days)),
|
|
new(_Distance, nameof(_Distance))
|
|
];
|
|
result = string.Join(' ', from l in results orderby l.Value descending select $"{l.Name}_{l.Value};");
|
|
return result;
|
|
}
|
|
|
|
void IDistanceLimits.AddCounts(int days, int distance)
|
|
{
|
|
_Days += days;
|
|
_Distance += distance;
|
|
}
|
|
|
|
} |