/// <summary> /// Factory de fonction /// </summary> /// <param name="nomFonction">Nom de la fonction trigonométrique</param> /// <param name="parametres">Liste des parmètres de la fonction</param> /// <returns></returns> public static IElementCalcul Factory(string nomFonction, ICollection <IElementCalcul> parametres) { IElementCalcul elt; if ((elt = FonctionTrigo.ObtenirFonctionTrigo(nomFonction, parametres)) != null) { return(elt); } return(new Fonction(nomFonction, parametres)); }
/// <summary> /// Visit d'un FonctionTrigo /// </summary> /// <param name="elt"></param> void IVisiteurIElement.Visit(FonctionTrigo elt) { double valeurParametre; elt.Parametre.Accept(this); valeurParametre = _valeurCourante; switch (elt.Fonction) { case FonctionTrigo.FCTrigo.sin: _valeurCourante = Math.Sin(ConvertToRadians(valeurParametre)); break; case FonctionTrigo.FCTrigo.cos: _valeurCourante = Math.Cos(ConvertToRadians(valeurParametre)); break; case FonctionTrigo.FCTrigo.acos: _valeurCourante = ConvertToCurrentAngle(Math.Acos(valeurParametre)); break; case FonctionTrigo.FCTrigo.asin: _valeurCourante = ConvertToCurrentAngle(Math.Asin(valeurParametre)); break; case FonctionTrigo.FCTrigo.tan: _valeurCourante = Math.Tan(ConvertToRadians(valeurParametre)); break; case FonctionTrigo.FCTrigo.atan: _valeurCourante = ConvertToCurrentAngle(Math.Atan(valeurParametre)); break; case FonctionTrigo.FCTrigo.sinh: _valeurCourante = Math.Sinh(ConvertToRadians(valeurParametre)); break; case FonctionTrigo.FCTrigo.cosh: _valeurCourante = Math.Cosh(ConvertToRadians(valeurParametre)); break; case FonctionTrigo.FCTrigo.tanh: _valeurCourante = Math.Tanh(ConvertToRadians(valeurParametre)); break; default: _valeurCourante = 0; // Pas possible throw new ArgumentException(string.Format(System.Globalization.CultureInfo.InvariantCulture, Calculateur.ResourceManager.GetString("FonctionIndefini"), elt.ToString())); } }