Skip to content
Snippets Groups Projects
FactComparer.cs 1.33 KiB
Newer Older
  • Learn to ignore specific revisions
  • using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public abstract class FactComparer : EqualityComparer<Fact>
    {
        protected bool search_righthanded;
    
    
        protected abstract bool Compare (Fact solution, Fact fact);
    
    
        public FactComparer SetSearchRight()
        {
            search_righthanded = true;
            return this;
        }
        public FactComparer SetSearchLeft()
        {
            search_righthanded = false;
            return this;
        }
    
        public override bool Equals(Fact left, Fact right)
        {
            return search_righthanded ? Compare(left, right) : Compare(right, left);
        }
    
        public override int GetHashCode(Fact obj)
        {
    
        }
    }
    
    public class FactEquivalentsComparer : FactComparer
    {
    
        protected override bool Compare (Fact solution, Fact fact)
    
        }
    }
    
    class LineFactHightDirectionComparer : FactComparer
    {
    
        protected override bool Compare (Fact solution, Fact fact)
    
            return fact is LineFact && solution is LineFact
                && Math3d.IsApproximatelyParallel(((LineFact) fact).Dir, ((LineFact) solution).Dir)
                && ((LineFact) fact).Distance + Math3d.vectorPrecission >= ((LineFact) solution).Distance;
    
            // && Mathf.Approximately(((LineFact) x).Distance, ((LineFact) y).Distance);
        }
    }