1

Je suis actuellement sur un tout petit projet de tracé de courbe, mais comme je compte faire un affichage très rapide, je doit calculer un tableau de valeurs histoire de pouvoir tracé ...

Comment feriez-vous donc pour générer ce tableau ?

-> appel de la fonction par exemple: function(3*x^2+5*y+7,x,y)

je compte soit:

- faire une fonction qui génère un code du style:

y = f(x) | short f(x) return (1/5*(3*(x<<1)-7));

mais je ne sais pas encore comment vraiment faire pour la coder ...

- générer une fonction TIOS (Func) que j'appelerais à la volée... mais vive la rapidité
roll


j'ai pas d'autres idées pour l'instant ...

2

Tu veux faire quoi? Un "implicit plotter" plus rapide que celui de AMS?
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

fais comme la calc, mais en plus rapide : tu testes les points de tout l'écran selon la grille que tu as définie.
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

4

Kevin Kofler
a écrit : Tu veux faire quoi? Un "implicit plotter" plus rapide que celui de AMS?


je veux m'amuser...


Miles: mon probleme c de passer l'expression mathématique en fonction pour programme (C ou ASM)

5

ASM pour repondre à ton hesitation
avatar
納 豆パワー!
I becamed a natto!!!1!one!

6

Donc si j'ai bien compris tu veux sauver les valeurs que prend la fonction afin de graphiquer plus vite la prochaine fois:

short x,xstep;
short vals[240];

x=100;		/* valeur initiale de x */
xstep=10;	/* déplacement en x */

/* sauve les valeurs */

for(i=0;i<240;i++)
{
	vals[i]=fonction(x);
	x+=xstep;
}

/* graphique */

for(i=0;i<240;i++)
{
	point_on(i,vals[i]);
}

Boogerman

Bouger, travailler, manger et se reposer, c'est la devise de la tortue!

7


- faire une fonction qui génère un code du style:
y = f(x) | short f(x) return (1/5*(3*(x<<1)-7));
mais je ne sais pas encore comment vraiment faire pour la coder ...

c un parseur que tu veux faire ?

8

par ex, tu pourrais faire la méthode que je t'ai dite, et pour la fonction en elle-même, tu l'as programme "à la volée" comme ce que suggère Pen^2.
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

9

oué Miles, faire ce que tu dis c ce que je comptais faire, mais ce qui me gêne, c le parser ...

10

J'imagine bien... Commence par faire les trucs simple, genre retransformer la formule en RPL, ça ira plus vite avec un automate bourrin derrière, non ?
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

11

oué, c la méthode que je pensais faire ... mais c lourd

12

Transformer une expression BASIC e en une fonction C f telle que f(x0)=e|x=x0 est assez facile. Il suffit de prendre l'expression au format tokénisé (donc soit lue directement comme argument, soit tokénisée avec push_parse_text) et de:
- soit appliquer une fonction comme push_substitute_simplify (c'est dans unknown.h, mais premièrement le fonctionnement me semble assez facile à deviner vu son prototype et deuxièmement il y a les détails dans la documentation du SDK de TI)
- soit faire son travail à la main:
ESI expression;

float f(float x)
{
  ESI top_estack_backup=top_estack;
  volatile float result;
  TRY
    push_Float(x);
    push_quantum_pair(VAR_X_TAG,EQ_TAG);
    push_expr_quantum(expression,WITH_TAG);
    NG_approxESI(top_estack);
    result=estack_number_to_Float(top_estack);
  ONERR
    result=NAN;
  ENDTRY
  top_estack=top_estack_backup;
  return result;
}

void _main(void)
{
  expression=top_estack;
  //...
}



Le problème est que toi, tu veux une fonction implicite. C'est plus compliqué. Soit tu évalues la valeur de la différence des 2 côtés de l'équation aux paires (x,y) comme dans mon exemple avec une variable et tu travailles avec ça (c'est comme ça que marche l'"implicit plotter" de AMS), soit tu travailles avec le solve du BASIC.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

13

Kevin Kofler a écrit :
Soit tu évalues la valeur de la différence des 2 côtés de l'équation aux paires (x,y) comme dans mon exemple avec une variable et tu travailles avec ça (c'est comme ça que marche l'"implicit plotter" de AMS), [...].


C'est une très bonne idée de faire cela, je ne connaissais pas comment marche AMS pour les fonctions. Mais le problème maintenant est: comment faire pour qu'il y ait plusieurs variables ? parceque si j'ai compris comment ça marche, tu n'utilises pas la forme cartésienne, c ça ?