Moved face area and confidence to before sorting

This commit is contained in:
2023-02-27 20:47:35 -07:00
parent 70c9ee5781
commit 18b65b8884
4 changed files with 41 additions and 44 deletions

View File

@ -5,10 +5,8 @@ namespace View_by_Distance.Distance.Models;
public class DistanceLimits : IDistanceLimits
{
private int _Area;
private int _Days;
private int _Distance;
private int _Confidence;
public double FaceAreaPermyriad { init; get; }
public double RangeDaysDeltaTolerance { init; get; }
@ -50,8 +48,6 @@ public class DistanceLimits : IDistanceLimits
string result;
List<(int Value, string Name)> results = new()
{
new(_Area, nameof(_Area)),
new(_Confidence, nameof(_Confidence)),
new(_Days, nameof(_Days)),
new(_Distance, nameof(_Distance))
};
@ -59,12 +55,10 @@ public class DistanceLimits : IDistanceLimits
return result;
}
void IDistanceLimits.AddCounts(int area, int days, int distance, int confidence)
void IDistanceLimits.AddCounts(int days, int distance)
{
_Area += area;
_Days += days;
_Distance += distance;
_Confidence += confidence;
}
}

View File

@ -400,7 +400,7 @@ public partial class E_Distance
{
List<SortingContainer> results = new();
SortingContainer sortingContainer;
int area = 0, days = 0, distance = 0, confidence = 0;
int days = 0, distance = 0;
Sorting[] collection = Shared.Models.Stateless.Methods.ISorting.Sort(sortingCollection);
foreach (Sorting sorting in collection)
{
@ -418,22 +418,12 @@ public partial class E_Distance
distance += 1;
continue;
}
if (face.Mapping.MappingFromLocation.ConfidencePercent < distanceLimits.FaceConfidencePercent)
{
confidence += 1;
continue;
}
if (face.Mapping.MappingFromLocation.AreaPermyriad < distanceLimits.FaceAreaPermyriad)
{
area += 1;
continue;
}
sortingContainer = new(face.Mapping, sorting);
results.Add(sortingContainer);
if (results.Count >= distanceLimits.SortingMaximumPerFaceShouldBeHigh)
break;
}
distanceLimits.AddCounts(area, days, distance, confidence);
distanceLimits.AddCounts(days, distance);
return results;
}
@ -483,13 +473,17 @@ public partial class E_Distance
return faceDistanceEncodings;
}
public static FaceDistanceContainer[] FilteredFaceDistanceContainers(Map.Models.MapLogic mapLogic, FaceDistanceContainer[] faceDistanceContainers)
public static FaceDistanceContainer[] FilteredFaceDistanceContainers(Map.Models.MapLogic mapLogic, FaceDistanceContainer[] faceDistanceContainers, DistanceLimits distanceLimits)
{
List<FaceDistanceContainer> results = new();
foreach (FaceDistanceContainer faceDistanceContainer in faceDistanceContainers)
{
if (faceDistanceContainer.FaceDistance is null || faceDistanceContainer.Face.Mapping?.MappingFromLocation is null)
throw new NotSupportedException();
if (faceDistanceContainer.Face.Mapping.MappingFromLocation.ConfidencePercent < distanceLimits.FaceConfidencePercent)
continue;
if (faceDistanceContainer.Face.Mapping.MappingFromLocation.AreaPermyriad < distanceLimits.FaceAreaPermyriad)
continue;
if (faceDistanceContainer.Face.Mapping.MappingFromFilter.IsFocusModel is not null && !faceDistanceContainer.Face.Mapping.MappingFromFilter.IsFocusModel.Value)
continue;
if (faceDistanceContainer.Face.Mapping.MappingFromFilter.IsFocusRelativePath is not null && !faceDistanceContainer.Face.Mapping.MappingFromFilter.IsFocusRelativePath.Value)