00001 using System; 00002 using System.Collections.Generic; 00003 using System.Linq; 00004 using System.Text; 00005 00006 namespace GEP.Core.Float.Functions 00007 { 00012 [Serializable] 00013 public class Threshold : Symbol 00014 { 00018 protected static string NAME = "Threshold"; 00022 protected float _threshold; 00026 protected float _underTresholdVal; 00030 protected float _equalToTresholdVal; 00034 protected float _aboveTresholdVal; 00035 00046 public Threshold(float threshold, float underTresholdVal, 00047 float equalToTresholdVal, float aboveTresholdVal) 00048 : base(1, NAME) 00049 { 00050 _threshold = threshold; 00051 _underTresholdVal = underTresholdVal; 00052 _equalToTresholdVal = equalToTresholdVal; 00053 _aboveTresholdVal = aboveTresholdVal; 00054 } 00055 00056 public override float Value(float[] parameters, int startIndex) 00057 { 00058 if (parameters[startIndex] < _threshold) 00059 return _underTresholdVal; 00060 else if (parameters[startIndex] > _threshold) 00061 return _aboveTresholdVal; 00062 return _equalToTresholdVal; 00063 } 00064 00069 public Threshold(Threshold symbol) 00070 : base(symbol) 00071 { 00072 _threshold = symbol._threshold; 00073 _underTresholdVal = symbol._underTresholdVal; 00074 _equalToTresholdVal = symbol._equalToTresholdVal; 00075 _aboveTresholdVal = symbol._aboveTresholdVal; 00076 } 00077 00078 public override GEP.Core.Common.Symbol Clone() 00079 { 00080 return new Threshold(this); 00081 } 00082 } 00083 }