BananaTree
Messages postés337Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention 2 novembre 2010
-
24 févr. 2005 à 22:15
BananaTree
Messages postés337Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention 2 novembre 2010
-
1 mars 2005 à 21:25
slt
j'ai crée une classe MX de grapheur de fonctions cartésiènes.
de fait, j'ai commencé à faire une fonction de conversion de strings to number, ce qui à première vue n'est pas très compliqué, mais qui risque d'être très long.
donc si qq l'à déja fait, ou vu, merci de me faire signe.
cs_Edwige31
Messages postés140Date d'inscriptionmardi 26 août 2003StatutMembreDernière intervention20 mars 2005 24 févr. 2005 à 23:15
Salut,
je te laisse un exemple que tu testeras ... tu comprendras tout seul ... :
var i = 0;
var s = "12.3e4";
trace(i);
i = new Number(s);
i++;
trace(i);
stop();
cs_Edwige31
Messages postés140Date d'inscriptionmardi 26 août 2003StatutMembreDernière intervention20 mars 2005 25 févr. 2005 à 00:00
Non mais .. je sais !
C'est juste pour te monter que : i = new Number(s);
marche
(et dans tous les sens ... même le pire !) pour ce que tu cherches a faire et c'est pas la peine de refaire du code qui existe déjà ...
cs_Edwige31
Messages postés140Date d'inscriptionmardi 26 août 2003StatutMembreDernière intervention20 mars 2005 25 févr. 2005 à 23:04
Quand un message peu explicite s'intitule "convertir une chaine en nombre", on peut s'attendre légitimement à obtenir les réponses que tu as eues. Tu aurais dû appeler ce topic, solveur d'équation ou mettre une description plus appropriée comme dans ton dernier message.
J'ai une solution hyper simple mais qui entraine des contraintes : utiliser la puissance du eval de javascript.
1. oblige l'exécution de ton Flash dans une page HTML
2. lors de la saisie de la formule dans le champ de saisie, les cos, PI, ln doivent être précédé par "Math." comme en Flash je présume mais je ne suis qu'une débutante qui comprends rien aux problèmes des autres ;)
Ainsi donc, tu saisis la formule dont tu veux voir la courbe, puis quant tu itères sur les x, tu remplace x par la valeur et tu demandes à JavaScript de te fournir la valeur par un eval()
Au bas mot, un soir de dev, un soir de test, un soir pour fêter ça, en trois jours t'a fini :P
BananaTree
Messages postés337Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention 2 novembre 2010 26 févr. 2005 à 11:38
ben soit.
"j'ai crée une classe MX de grapheur de fonctions cartésiènes." ce qui sous entends pour f(x) :(au hazard) y cos (1/x) ; y 2x+3; y =log(x)/x etc....
ce qui traduit en AS donne bien : var y = Math.cos(1/x) etc...
en fait tout est explicité dans la première phrase ! ! !
certes c'est élyptique, mais c'est là.
pour ta solution d'utiliser eval de java, en fait j'y ai pensé, et ça me parrait être une bonne solution, mais je vais travailler plutot sur un truc du genre (c'est juste un test pour voir si ça marche) :
_global.testNumber = "acos(0.2)";
_global.testArray = new Array();
function convertMathEquationToNumber(string) {
//test non dynamique
function test() {
for (i=0; i<=string.length; i++) {
if (string.charAt[i] == a) {
switch (string.charAt[i+1]) {
case c :
var x = 0.2;
testArray.push(Math.acos(x));
}
}
return (testArray[0]);
}
}
test();
}
convertMathEquationToNumber(testNumber);
ce qui me permetra d'utiliser les notations mathématiques conventionnelles.
l'idée en fait, est de créer une puissante fonction d'analyse de chaine (non figurée dans mon exemple) qui "slicera" chaque élément de la chaine dans un tableau (chiffres, opérateurs, variables, etc...)
ensuite, la fonction de conversion reprendra les valeurs du tableau en les remplaçant par les variables AS appropriées.
pour finir, on créera une variable globale qui assemblera toutes les variables créées en dynamique dans le tableau et qui retournera la valeur dans l'emplacement choisi de son code.
pour couper court à toute polémique, note bien que j'ai déclaré les variables de ma classe comme suit :
_global.simpleFunction = Math.atan(abscissa);
et que je cherchai juste à faire un truc du genre :pour ----- _global.simpleFunction "Math.atan(abscissa)" --- eval (simpleFunction) qui retourne --- simpleFunction Math.atan(abscissa)
voilà, maitenant j'ai quelque centaines de lignes de code à tapper, et je m'en serai bien passé. :-(
BananaTree
Messages postés337Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention 2 novembre 2010 1 mars 2005 à 21:25
bon ben j'ai finalement réussi à émuler la fonction eval qui me retourne f(x).
le plus drole, c'est que les choses les plus simples sont souvent les meilleures.