Exemple #1
0
 /// <summary>
 ///   Indică dacă valoarea pentru o proprietate este fuzzy sau crisp.
 /// </summary>
 /// <param name="property">Proprietatea pentru care se caută valoarea</param>
 /// <returns>True pentru valori fuzzy şi False pentru valori crisp</returns>
 public bool isFuzzy(Property property)
 {
     return this.values.ContainsKey(property) && (this.values[property] is Term);
 }
Exemple #2
0
        /// <summary>
        ///   Returnează valoarea crisp a unei proprietăţi.
        /// </summary>
        /// <param name="property">Proprietatea pentru care se caută valoarea</param>
        /// <returns>Valoarea crisp a proprietăţii sau NaN dacă valoarea este fuzzy sau dacă nu există proprietatea</returns>
        public double getCrispValue(Property property)
        {
            if (!this.values.ContainsKey(property)) {

                return double.NaN;
            }

            return this.values[property] is double ? (double)this.values[property] : double.NaN;
        }
Exemple #3
0
 /// <summary>
 ///   Returnează termenul fuzzy al unei proprietăţi.
 /// </summary>
 /// <param name="property">Proprietatea pentru care se caută valoarea</param>
 /// <returns>Termenul fuzzy al valorii sau null dacă valoarea este crisp sau dacă nu există proprietatea</returns>
 public Term getFuzzyValue(Property property)
 {
     return this.values.ContainsKey(property) ? this.values[property] as Term : null;
 }
        /// <summary>
        ///   Adaugă o proprietate în graficul vizual. Se foloseşte un gradient cu gradaţii discrete pentru afişarea termenilor.
        /// </summary>
        /// <param name="property">Proprietatea de adăugat</param>
        /// <param name="startColor">Prima culoare în gradientul de afişare a termenilor</param>
        /// <param name="endColor">Ultima culoare în gradientul de afişare a termenilor</param>
        /// <param name="secondAxis">True indică plasarea formelor pe axa Y2, False pe axa Y1</param>
        public void addProperty(Property property, Color startColor, Color endColor, bool secondAxis)
        {
            if (property == null) {

                return;
            }

            int termsCount = property.termsCount;

            if (termsCount > 0) {

                float plusA = (float)(endColor.A - startColor.A) / termsCount;
                float plusR = (float)(endColor.R - startColor.R) / termsCount;
                float plusG = (float)(endColor.G - startColor.G) / termsCount;
                float plusB = (float)(endColor.B - startColor.B) / termsCount;

                float colA = (float)startColor.A;
                float colR = (float)startColor.R;
                float colG = (float)startColor.G;
                float colB = (float)startColor.B;

                foreach (Term term in property.terms) {

                    this.addTerm(term, Color.FromArgb((int)colA, (int)colR, (int)colG, (int)colB), secondAxis, false, null);

                    colA += plusA;
                    colR += plusR;
                    colG += plusG;
                    colB += plusB;
                }
            }
        }