новые иконки в OpenBoard
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
OpenBoard/resources/library/applications/GraphMe.wgt/JavaScript/Utils.js

229 lines
4.6 KiB

7 years ago
// 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();
}