// Lance la procédure pour dessiner la fonction qui se trouve dans l'input en haut du widget. // Permet aussi d'actualiser le graphique. function actualiserGraph(){ affichage.calculer(); } // Retourne l'index du dernier endroit où se trouve listCharacter dans une chaîne de caractère. String.prototype.getLastIndexOf = function(listCharacter, minPos, maxPos){ var count = 0; var parenthese = false; if(!maxPos){ maxPos = this.length; } for(var i=maxPos; i>=minPos; i--){ if(this.charAt(i) == ")"){ count++; parenthese = true; } else if(this.charAt(i) == "("){ count--; } // window.console.log(this.charAt(i)+" ; "+count); for(var j=0; j<listCharacter.length; j++){ if(this.charAt(i) == listCharacter[j]){ if(count<=0){ if(parenthese){ parenthese = false; } else{ return i; } } } } } return -1; } String.prototype.getIndexOf = function(listCharacter, minPos, maxPos){ var count = 0; if(!maxPos){ maxPos = this.length; } for(var i=minPos; i<=maxPos; i++){ if(this.charAt(i) == "("){ count++; } else if(this.charAt(i) == ")"){ count--; } for(var j=0; j<listCharacter.length; j++){ if(this.charAt(i) == listCharacter[j]){ if(count==0){ return i; } } } } return -1; } // Retourne un nombre aléatoire entre a et b. function alea(a,b){ return Math.floor((b-a+1)*Math.random()+a); } // ---- Fonctions canvas personnalisées ---- var ctxPrototype = Object.getPrototypeOf(document.createElement("canvas").getContext("2d")); // Dessiner une bulle ctxPrototype.bulle = function(x, y, largeur, hauteur, rayon){ if(!rayon){ rayon = 5; } this.beginPath(); this.moveTo(x+0, y-rayon); this.quadraticCurveTo(x+0, y-0, x+rayon, y-0); this.lineTo(x+largeur-rayon, y); this.quadraticCurveTo(x+largeur, y-0, x+largeur, y-rayon); this.lineTo(x+largeur, y-hauteur+rayon); this.quadraticCurveTo(x+largeur, y-hauteur, x+largeur-rayon, y-hauteur); this.lineTo(x+rayon, y-hauteur); this.quadraticCurveTo(x+0, y-hauteur, x+0, y-hauteur+rayon); this.closePath(); this.fill(); } // ---- Fonctions Mathématiques et constantes ---- // (rempalce sin() par Math.sin(), cos() par Math.cos(), tan() par Math.tan(), etc. var pi = 4 * atan(1); var PI = pi; var e = exp(1); function sin(valeur){ return Math.sin(valeur); } function cos(valeur){ return Math.cos(valeur); } function tan(valeur){ return Math.tan(valeur); } function cot(valeur){ return 1/Math.tan(valeur); } function sec(valeur){ return 1/cos(valeur); } function csc(valeur){ return 1/sin(valeur); } function asin(valeur){ return Math.asin(valeur); } function acos(valeur){ return Math.acos(valeur); } function atan(valeur){ return Math.atan(valeur); } function acot(valeur){ return Math.atan(1/valeur); } function asec(valeur){ return Math.acos(1/valeur); } function acsc(valeur){ return Math.asin(1/valeur); } var arcsin = asin; var arccos = acos; var arctan = atan; var arccot = acot; var arcsec = asec; var arccsc = acsc; function sinh(valeur){ return (Math.exp(valeur)-Math.exp(-valeur))/2; } function cosh(valeur){ return (Math.exp(valeur)+Math.exp(-valeur))/2; } function tanh(valeur){ return (Math.exp(valeur)-Math.exp(-valeur))/(Math.exp(valeur)+Math.exp(-valeur)); } function coth(valeur){ return (Math.exp(valeur)+Math.exp(-valeur))/(Math.exp(valeur)-Math.exp(-valeur)); } function sech(valeur){ return 1/cosh(valeur); } function csch(valeur){ return 1/sinh(valeur); } function asinh(valeur){ return Math.log(valeur+Math.sqrt(Math.pow(valeur,2)+1)); } function acosh(valeur){ return Math.log(valeur+Math.sqrt(Math.pow(valeur,2)-1)); } function atanh(valeur){ return Math.log((1+valeur)/(1-valeur))/2; } function acoth(valeur){ return Math.log((valeur+1)/(valeur-1))/2; } var arcsinh = asinh; var arccosh = acosh; var arctanh = atanh; var arccoth = acoth; function sqrt(valeur){ return Math.sqrt(valeur); } function pow(valeur1, valeur2){ return Math.pow(valeur1, valeur2); } function root(valeur1, valeur2){ if(valeur2%2==1 && valeur1<0){ return -Math.pow(-valeur1, (1/valeur2)); } else{ return Math.pow(valeur1, (1/valeur2)); } } function exp(valeur){ return Math.exp(valeur); } function log(valeur){ return Math.log(valeur)/Math.log(10); } function ln(valeur){ return Math.log(valeur); } function abs(valeur){ return Math.abs(valeur); } function sign(valeur){ if(valeur<0){ return -1; } else if(valeur>0){ return 1; } else{ return undefined; } } function round(valeur){ return Math.round(valeur); } function ceil(valeur){ return Math.ceil(valeur); } function floor(valeur){ return Math.floor(valeur); } function random(){ return Math.random(); }