public bool Discard(Parcel parcel, Func <double> random)
        {
            var ratio = parcel.AspectRatio();

            //If the ratio exceeds the max, discard this parcel
            return(ratio > _max);
        }
        public override bool Check(Parcel parcel, Func <double> random, INamedDataCollection metadata)
        {
            var min   = _min.SelectFloatValue(random, metadata);
            var max   = _max.SelectFloatValue(random, metadata);
            var ratio = parcel.AspectRatio();

            return(ratio >= min && ratio <= max);
        }
        public float?TerminationChance(Parcel parcel)
        {
            var ratio = parcel.AspectRatio();

            //If the ratio does not exceed min, there's a chance we'll terminate
            return(ratio < _min
                ? (float?)null
                : _terminationChance);
        }