static USSensorAggregator()
        {
            //Middle half of a right angle
            Range range = new Range(0.0625);

            //Measured in turns
            HeadingRanges[0] = range;
            HeadingRanges[1] = range + 0.25;
            HeadingRanges[2] = range + 0.5;
            HeadingRanges[3] = range + 0.75;
            HeadingRanges[4] = range;
        }
        private void updateSpeed()
        {
            const double threshold = 0.1;
            #if MIGHT_BREAK_STUFF
            //Going fast forward
            if (ActualSpeed > threshold)
            {
                if (Speed > threshold)
                    ActualSpeed = Speed;
                else
                    ActualSpeed = threshold;
            }

            //Going fast backward
            else if (ActualSpeed < -threshold)
            {
                if (Speed < -threshold)
                    ActualSpeed = Speed;
                else
                    ActualSpeed = -threshold;
            }

            #else
            if (false) ;
            #endif
            else
            {
                Range allowableChange = new Range(MaxAcceleration * _period);
                ActualSpeed += allowableChange.Clip(Speed - ActualSpeed);
            }
        }
 public VectorRange(Range X, Range Y)
 {
     this.X = X;
     this.Y = Y;
 }
 public OutputFunction(Setter setter, Range range = null)
 {
     Range = range == null ? Range.Infinite : range;
     Set = setter;
 }
 public InputFunction(Getter getter, Range range = null)
 {
     Range = range == null ? Range.Infinite : range;
     Get = getter;
 }