// // A right triangle means we can apply the pythagorean theorem to acquire an unknown. // public static bool HandleTriangle(KnownMeasurementsAggregator known, Triangle tri) { if (tri == null) return false; KeyValuePair<Segment, double> pair = tri.PythagoreanTheoremApplies(known); if (pair.Value > 0) { // Do we know this already? if (known.GetSegmentLength(pair.Key) > 0) return false; // We don't know it, we add it. known.AddSegmentLength(pair.Key, pair.Value); return true; } else { if (AddKnowns(known, tri.IsoscelesRightApplies(known))) return true; if (AddKnowns(known, tri.CalculateBaseOfIsosceles(known))) return true; if (AddKnowns(known, tri.RightTriangleTrigApplies(known))) return true; } return false; }