This commit is contained in:
2022-08-30 10:29:20 -07:00
parent 753eeaba2a
commit 7f717258d2
13 changed files with 284 additions and 216 deletions

View File

@ -10,32 +10,29 @@ public class Mapping : Properties.IMapping
protected readonly string _DisplayDirectoryName;
protected bool? _Filtered;
protected readonly int? _NormalizedPixelPercentage;
protected readonly PersonBirthday _PersonBirthday;
protected readonly string _PersonKey;
protected PersonBirthday _PersonBirthday;
public int? ApproximateYears => _ApproximateYears;
public string DisplayDirectoryName => _DisplayDirectoryName;
public bool? Filtered => _Filtered;
public int? NormalizedPixelPercentage => _NormalizedPixelPercentage;
public PersonBirthday PersonBirthday => _PersonBirthday;
public string PersonKey => _PersonKey;
[JsonConstructor]
public Mapping(int? approximateYears, string displayDirectoryName, bool? filtered, int? normalizedPixelPercentage, PersonBirthday personBirthday, string personKey)
public Mapping(int? approximateYears, string displayDirectoryName, bool? filtered, int? normalizedPixelPercentage, PersonBirthday personBirthday)
{
_ApproximateYears = approximateYears;
_DisplayDirectoryName = displayDirectoryName;
_Filtered = filtered;
_NormalizedPixelPercentage = normalizedPixelPercentage;
_PersonBirthday = personBirthday;
_PersonKey = personKey;
}
public Mapping(int? approximateYears, string displayDirectoryName, int? normalizedPixelPercentage, PersonBirthday personBirthday, string personKey) :
this(approximateYears, displayDirectoryName, null, normalizedPixelPercentage, personBirthday, personKey)
public Mapping(int? approximateYears, string displayDirectoryName, int? normalizedPixelPercentage, PersonBirthday personBirthday) :
this(approximateYears, displayDirectoryName, null, normalizedPixelPercentage, personBirthday)
{ }
public Mapping(int? approximateYears, string displayDirectoryName, PersonBirthday personBirthday, string personKey) :
this(approximateYears, displayDirectoryName, null, null, personBirthday, personKey)
public Mapping(int? approximateYears, string displayDirectoryName, PersonBirthday personBirthday) :
this(approximateYears, displayDirectoryName, null, null, personBirthday)
{ }
public override string ToString()
@ -48,4 +45,6 @@ public class Mapping : Properties.IMapping
public void SetFiltered(bool value) => _Filtered = value;
public void SetPersonBirthday(PersonBirthday personBirthday) => _PersonBirthday = personBirthday;
}

View File

@ -8,6 +8,5 @@ public interface IMapping
public bool? Filtered { get; }
public int? NormalizedPixelPercentage { get; }
public PersonBirthday PersonBirthday { get; }
public string PersonKey { get; }
}

View File

@ -12,5 +12,6 @@ public interface IClosest
const int Digits = 3;
const int Factor = 1000;
const int MaximumPer = 50;
const double Tolerance = 0.6d;
}

View File

@ -7,6 +7,5 @@ public interface IFaceDistance
const int HiddenImageFactor = 2;
const int MaximumPer = 9999;
const double Tolerance = 0.6d;
}

View File

@ -5,7 +5,7 @@ internal abstract class Closest
private static int Get(List<double> faceDistances) => (int)(Math.Round(faceDistances.Average(), Stateless.IClosest.Digits) * Stateless.ILocation.Factor);
private static Models.Closest Get(Models.Face face, DateTime minimumDateTime, FaceDistance faceDistance)
private static Models.Closest Get(Models.PersonBirthday personBirthday, Models.Face face, DateTime minimumDateTime, FaceDistance faceDistance)
{
Models.Closest result;
int average = Get(faceDistance.Distances);
@ -19,16 +19,18 @@ internal abstract class Closest
if (faceDistance.MinimumDateTime < faceDistance.Mapping.PersonBirthday.Value)
ticksDelta *= 2;
}
if (minimum > Stateless.IClosest.Tolerance)
faceDistance.Mapping.SetPersonBirthday(personBirthday);
if (face.Location?.NormalizedPixelPercentage is null)
throw new NullReferenceException(nameof(face.Location.NormalizedPixelPercentage));
result = new(average, face.Location.NormalizedPixelPercentage.Value, faceDistance.IsWrongYear, faceDistance.Mapping, minimum, faceDistance.MinimumDateTime, ticksDelta);
return result;
}
internal static Models.Closest[] GetCollection(Models.Face face, DateTime minimumDateTime, List<FaceDistance> faceDistances)
internal static Models.Closest[] GetCollection(Models.PersonBirthday personBirthday, Models.Face face, DateTime minimumDateTime, List<FaceDistance> faceDistances)
{
Models.Closest[] results;
Models.Closest[] closestCollection = (from l in faceDistances select Get(face, minimumDateTime, l)).ToArray();
Models.Closest[] closestCollection = (from l in faceDistances select Get(personBirthday, face, minimumDateTime, l)).ToArray();
results = (from l in closestCollection orderby l.Average, l.TicksDelta.HasValue, l.TicksDelta select l).ToArray();
return results;
}

View File

@ -5,6 +5,6 @@ public interface IClosest
Models.Closest[] TestStatic_Get(List<FaceDistance> faceDistances);
static Models.Closest[] GetCollection(Models.Face face, DateTime minimumDateTime, List<FaceDistance> faceDistances) => Closest.GetCollection(face, minimumDateTime, faceDistances);
static Models.Closest[] GetCollection(Models.PersonBirthday personBirthday, Models.Face face, DateTime minimumDateTime, List<FaceDistance> faceDistances) => Closest.GetCollection(personBirthday, face, minimumDateTime, faceDistances);
}

View File

@ -20,6 +20,11 @@ public interface IPersonBirthday
static DateTime? GetDateTime(string personKey) =>
PersonBirthday.GetDateTime(personKey);
Models.PersonBirthday TestStatic_GetPersonBirthday(long ticks) =>
new(new(ticks));
static Models.PersonBirthday GetPersonBirthday(long ticks) =>
new(new(ticks));
string TestStatic_GetFileName(Models.PersonBirthday personBirthday) =>
PersonBirthday.GetFileName(personBirthday);
static string GetFileName(Models.PersonBirthday personBirthday) =>