public float Compute(MatchAnalysis analysis) { float score = 0; score += PairCountFactor * analysis.PairCount; score += CorrectTypeFactor * analysis.CorrectTypeCount; score += SupportedCountFactor * analysis.SupportedCount; score += PairFractionFactor * analysis.PairFraction; score += EdgeCountFactor * analysis.EdgeCount; if (analysis.PairCount >= 2) { var maxDistanceError = analysis.MaxDistanceError * (analysis.PairCount - 1); score += DistanceAccuracyFactor * (maxDistanceError - analysis.DistanceErrorSum) / maxDistanceError; var maxAngleError = analysis.MaxAngleError * (analysis.PairCount - 1) * 2; score += AngleAccuracyFactor * (maxAngleError - analysis.AngleErrorSum) / maxAngleError; } if (Logger.IsActive) Logger.Log(score); return score; }
public float Compute(MatchAnalysis analysis) { float score = 0; score += PairCountFactor * analysis.PairCount; score += CorrectTypeFactor * analysis.CorrectTypeCount; score += SupportedCountFactor * analysis.SupportedCount; score += PairFractionFactor * analysis.PairFraction; score += EdgeCountFactor * analysis.EdgeCount; if (analysis.PairCount >= 2) { var maxDistanceError = analysis.MaxDistanceError * (analysis.PairCount - 1); score += DistanceAccuracyFactor * (maxDistanceError - analysis.DistanceErrorSum) / maxDistanceError; var maxAngleError = analysis.MaxAngleError * (analysis.PairCount - 1) * 2; score += AngleAccuracyFactor * (maxAngleError - analysis.AngleErrorSum) / maxAngleError; } if (Logger.IsActive) { Logger.Log(score); } return(score); }