Exemple #1
0
        /// <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()));
            }
        }