begin process at 2010 02 09 20:08:42
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths

 > TRACEUR DE FONCTION ÉVOLUÉ [EN TRAVAUX]

TRACEUR DE FONCTION ÉVOLUÉ [EN TRAVAUX]


 Information sur la source

Note :
9 / 10 - par 5 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths Classé sous :traceur, fonction, analyse, parametrique Niveau :Expert Date de création :09/09/2006 Date de mise à jour :16/09/2006 17:31:01 Vu / téléchargé :7 323 / 1 158

Auteur : Agaga

Ecrire un message privé
Site perso
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Bonjour à tous,

je vous présente ici un traceur de fonction évolué.
Il gère, plus ou moins bien, un environnement de travail auquel on peut ajouter, supprimer et réutiliser des fonctions.
Par exemple il est possible de definir une fonction avec un nombre n d'arguments et de l'utiliser dans une autre fonction.

Mais pour en savoir plus sur ses possibilités, rdv un peu plus bas, dans la section "Explication finale", je vous ai concocté un petit exercice ;).

D'autres part, j'ai aussi créé un nouveau (par rapport a mes precedents traceurs, et ceux que j'ai pu voir ici) "moteur" de dessin des courbes. Celui-ci ne nécessite plus de définir la précision du tracé, il s'adapte a la courbe, et donc offre un tracé (presque toujours) optimisé en fonction de la fenetre d'affichage. Malheureusement, ce "presque toujours" persiste et j'accepte volontier de l'aide pour y remedier ;). [NB: le moteur se trouve dans board.cls]

Dans le but de vous orienter un peu, j'ai fait des annotations sur l'image capturée ;)


 Conclusion

Comme vous le constaterez, le code manque un peu de commentaires, mais je fais toujours en sorte de choisir des noms pertinants. De plus chaque partie du programme est répartie dans des sous-projets indépendants (analyseur syntaxique et lexical, gestion des sauvegardes/chargements de l'environnement, etc... a ce sujet, je tiens a preciser que le projet "WinDoIt" present dans le groupe de projets n'est pas encore utilisé).

J'espère avoir beaucoup de feedback de votre part, et même de l'aide de la part des plus courageux ;).

Voici les bugs et manques du logiciel que j'ai pu constater (non exhaustif) :

- Bug (aléatoire ?) lors de l'utilisation de fonctions en parametre d'autres fonctions. Je ne sais pas vraiement d'ou ca vient, j'ai plusieurs fois tracé l'exécution sans vraiement mettre le doigt sur l'origine du problème. N'hésitez donc pas a me donner vos impressions et le plus de details possibles lorsque cela survient.
- Pour les fonctions paramétriques, je n'ai pas encore implanté l'exécution en mode console de la fonction pour une valeur de t donnée. On ne peut que tracer une fonction paramétrique, pas la manipuler. Donc j'aimerai egalement pouvoir faire en sorte d'utiliser le résultat de fonctions paramétriques dans d'autres fonctions paramétriques. Exemple :
  on a la fonction parametrique u(t) = cos(t), sin(t)
  on souhaite utiliser le résultat de cette fonction paramétrique dans v(t) en ecrivant ainsi : v(t)=2*u(t),3*u(t).
  tel que cela revienne à éfinir v(t) ainsi : v(t) = 2*cos(t),3*sin(t).
Pour cela aussi, si quelques âmes charitables se sentent de m'aider, c'est avec joie ! :D

Bon, pour le reste des bugs, je compte sur vous pour m'en faire remonter quelques uns si possible ;).
______________________________________________ _______________

Utilisation :

Pour effectuer un calcul, déclarer une fonction ou une variable, il suffit de le taper dans la zone de texte en-dessous de la console.
Par exemple pour effectuer un calcul on tape :
3*5
Le résultat sera affiché dans la console.
Le principe reste le même pour tout type de calcul ou de déclaration.
Une déclaration (de fonction ou de variable) se fait a l'aide de l'opérateur '='. par exemple :
x=3*5
[declare la variable 'x' et lui affecte la valeur 15 calculée lors du lancement de l'instruction et pas a chaque fois qu'on rappelle x (pas si évident que ça).]
x
[renvoi la valeur contenue dans x, càd 15.]
f(x)=3*x
[définie la fonction f à 1 argument x, qui N'EST PAS le même que le x défini précédemment. Celui-ci est local a la fonction.]
g(y)=x*y
[défini g à 1 argument y, x quant à lui est le x défini 3 lignes au-dessus et dans l'état actuel de l'environnement, il vaut 15. A ce moment precis, g est equivalent à g(y)=15*y]
h(x,y,z)=x*y*z
[défini une fonction a 3 arguments.]
h(2,3,4)
[renvoi le résultat (2*3*4=)24.]
p(t)=3*t;5*t
[définie paramétriquement la fonction p qui vaut 3*t en x et 5*t en y]
p(3)
[~ Calculer les valeurs d'une fonction paramètrique pour une vameur du parametre n'est pas encore implémenté :s ~]
Voilà pour la console.

Lorsque vous déclaré une variable ou une fonction dans la console, cette dernière apparait dasn la liste déroulante au-dessus de la fenêtre graphique.
En sélectionner une dans cette liste provoquera son tracé, sauf si c'est une fonction a plus d'un argument, auquel cas rien ne sera tracé.

Le cadre situé sous la fenetre graphique sert à paramétrer la fenêtre graphique et le pas de la grille.
Celui situé sous la console sert a paramétrer les valuers du paramètre d'une fonction paramétrique, c'est a dire sa valeur de départ, sa valeur d'arrivée, et son pas de progression. La case a coché permet de ne pas se soucier du pas de progression du paramètre et d'essayer de tracé au mieu la courbe (n'est pas toujours parfait).

Enfin, il est possible de zoomer sur une portion de la fenêtre graphique. Pour cela il suffit de faire un clic avec le bouton du milieu de la souris pour prendre le premier coin de la zone de zoom, et un second clic avec le meme bouton pour valider la zone.

Voila, je pense que j'ai dis le principal. N'hésitez pas a poser vos questions en cas de problème.


______________________________________ _______________________

EXERCICE :
________________________________________________ _____________
Enfin, pour vous faire voir ce qu'il sait faire, je vous ai concocté un petit environnement avec les courbes de bézier.
Voici la marche a suivre pour afficher la courbe de bezier pour 4 points de controle :
1/ Tracé des points
Lancé successivement les fonctions p1(t),p2(t),p3(t) et p4(t) qui vont successivement dessiner les 4 pts a l'ecran (points definis respectivement par (x1,y1), (x2,y2), (x3,y3) et (x4,y4)).

2/ Tracé du polygone de controle
Une fois les pts tracés, je vous suggere de changer la couleur du tracé pour tracer les segments p1p2, p2p3 et p3p4 a l'aide des fonctions du meme nom.

3/ Tracé de la courbe de bézier pour le polygone de controle
Enfin, dans une autre couleur, lancez la fonction CB_4pts qui va tracer la courbes de bezier pour ce polygone. Et voila ! :)


Si vous voulez vous amuser a voir ce que cela donne pour un plus grand nombre de points, il suffit pour cela de définir ces points, rajouter les fonctions correspondantes de tracé des points et tracé des segments, et enfin, je vous laisse deviner a uqoi ressemble la fonction CB_Npts ou N est le nombre de points que vous avez ajouté !
exemple de figure interessante (entrez les points suivants, pour les pts p1 a p4, il n'y a rien a rajouter, juste a changer x1..x4 et y1...y4) :
p1:(0,0)
p2:(3,8)
p3:(11,7)
p4:(11,-1)
p5:(4,0)
p6:(-1,9)



PS: vous devez donc :
-modifier x1, x2, x3, x4 et y1, y2, y3, y4
-rajouter x5, x6, y5, y6, p5(u), p6(u), p4p5(u), p5p6(u) et CB_6tps(u)

Amusez-vous bien ! ;)



Merci et a bientôt


PS: il faut lancer le groupe de projet nommé "grpTraceurV4.vbg" ans le sous-répertoire TraceurV4.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

09 septembre 2006 16:55:39 :
-
11 septembre 2006 18:25:49 :
Ajouté : plein de blabla sur comment marche le programme. Ajouté : quelques constantes supplémentaires et l'affichage de la liste de ces constantes et des fonctions prédéfinies au démarrage du programme. Ajouté : un petit exemple avec les courbes de beziers. Supprimé : l'exemple de fonction qui calcul la dérivée d'une autre fonction (rien ne vous empeche de la refaire).
11 septembre 2006 18:38:02 :
Ajouté : blablabla (et oui, encore ;) )
11 septembre 2006 19:29:12 :
Corrigé : un bug lors de la sauvegarde de l'environnement sur le disque.
14 septembre 2006 14:41:31 :
Ajouté : gestion des erreurs de calculs dans la console (division par 0, fonction non definie pour une ou des valeurs donnees, variable non définie). Ajouté : Un bouton pour tracer une fonction, plutot que de tracer lors de la selection de la fonction dans la liste déroulante. Corrigé : quelques bugs dans le moteur de tracage de fonctions.
16 septembre 2006 17:31:01 :
Corrigé : Bug au niveau du moins unaire. Ajouté : prise en compte du plus unaire. Modifié : Moteur d'affichage réécrit et completemet commenté. Ce dernier est plus efficaces, plus rapide (environ 10%) et certains bug ont étés corrigés (notamment avec les fonctions non définies sur IR).

 Sources du même auteur

Source avec Zip TIMER HAUTE PRÉCISION
Source avec Zip Source avec une capture COURBES DE BEZIERS PAR L'ALGO DE DE CASTELJAU
Source avec Zip DICTIONNAIRES, ANAGRAMMES : ALGOS EFFICACES
Source avec Zip Source avec une capture HEXVIEWER : VISUALISATEUR DE FICHIERS EN HEXADECIMAL
Source avec Zip SAUVEGARDE DE PARAMETRES EN .INI(OU AUTRE)

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) PISH2010-VB2008 par SaintMaur
Source avec Zip Source avec une capture PI-SH-2010-VB6 par SaintMaur
ET... PI... par us_30
Source avec Zip Source avec une capture CHIFFRAGE ET DECHIFFRAGE FONCTION AFFINE par tresorsdevie
NB PREMIER : TEST DE FERMAT ET DE MILLER-RABIN par us_30

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) TRACEUR DE MOYENNES SCOLAIRES par tinux
Source avec Zip Source avec une capture TRACEUR PRESQUE COMPLET DES FONCTIONS ET D'INTEGRALES par amezghal
Source avec Zip UTILISER LA FONCTION LINE POUR EFFECTUER DES FONCTION AGORIT... par flagyg
Source avec Zip Source avec une capture TRACEUR DE FONCTIONS par Agaga
Source avec Zip ANALYSE DE FONCTIONS MATHÉMATIQUES par Agaga

Commentaires et avis

Commentaire de Agaga le 10/09/2006 10:04:36

Petite précision ; exemple de declaration d'une fonction paramétrique :
p(t) = 3*cos(t) ; 2*sin(t)

Agaga

Commentaire de violent_ken le 11/09/2006 11:30:40

Salut,

je n'ai pas eu le temps de regarder vraiment le source, je me suis surtout penché sur les résultats donnés par le programme.

Et là je dois dire que c'est vraiment un gros projet, très bien foutu (quoique je n'aime pas trop les projets "multi *.vbp"). J'avais aussi il y a longtemps (donc avec un style de programmation un peu nullissime ;) ) réalisé un programme similaire, mais je n'avais pas les mêmes objectifs ni les mêmes motivations. Je dois dire que le tien est LA référence sur vbfrance.com en la matière.

Rien d'autre à dire que : Bravo, 10/10.

@+

Commentaire de Agaga le 11/09/2006 15:32:08

Merci beaucoup pour tant d'éloges :) !
Même si a mon goût il est loin d'être achevé... :s

Agaga

Commentaire de PROGRAMMIX le 11/09/2006 20:47:31

Bonjour,

N'ayant regardé que le printscreen, je ne ferai aucun commentaire sur la source.

Mais j'aimerais savoir si quelqu'un pourrait nous faire une source traçant des "lignes" pour découper une image en puzzle.

Je m'explique : l'idée serait de charger une image, définir des quelques points sur des axes "imaginaires" et la fonction se chargerait de relier ces points par des "courbes".  

Programmix

Commentaire de Agaga le 11/09/2006 21:13:05

je vois bien ce que tu veux dire, mais a premiere vue, je pense que ce n'est pas si simple, en tout cas, pas avec des fonctions mathematiques, amoins d'utiliser les courbes de bezier "localement" (pour faire les boucles de decoupe des pieces du puzzle)... bref, sans rentrer dans les details, je vois bien un moyen de le faire, mais ce n'est pas evident. Je pense que ton idée est interessante et mérite que l'on s'y penche ;). Des que j'aurais un peu de temps je ferai une petite "etude" de la chose.

A+

Commentaire de PROGRAMMIX le 11/09/2006 21:41:43

Merci d'avance.
J'étais un jour tombé sur un site où cet aspect de la découpe des pièces était abordé par une formule mathématique (et il me semble qu'il était question de ces courbes de bézier).  
Mais je n'ai jamais réussis à comprendre le fonctionnement de celle-vi.
Donc j'attends que quelqu'un s'y colle...
D'ici-là, je te souhaite une bonne continuation.

Commentaire de Agaga le 11/09/2006 22:18:28

ben les courbes de bezier, c'est simple (sisi !!)
Pour te donner une idée, tente de faire l'exercice que je donne avec ce programme (cf Explication finale ci-dessus, j'ai fait une partie EXERCICE ou le but est de tracer la courbe de bezier en fonction de points donnés).

En fait, une courbe de bezier est une fonction parametrique assez complexe (en ce qui concerne son equation) mais dont le principe de fonctionnement est simple. Pour faire court, si tu as 4 pts numerotes de 1 a 4, eparpillé dans un plan, la courbe de bezier correspondant a ces points va partir du premier pour arriver au dernier en passant le plus pret possible des 2 autres.
Ces points sont appelés points de controle. Dans ton cas, il suffit de definir ces points de controle pour avoir la forme désirée avec la courbe de bézier.

Je te conseil donc d'essayer l'exercice donné ci-dessus et ensuite de deplacer les points voir ce que ca donne, tu vas comprendre rapidemnt le principe ;).

A+

Commentaire de fadelovesky le 14/09/2006 23:57:58

salut a vous tous:
     ton programme me semble tres bien,toutefois j'aimerai te proposer une amélioration au niveau du tracé:
     -Ajouter quelques fonctions gdi32 ou gdi+ (j'ai du oublier laquelle) pour lisser la courbe ou le tracé avec un ou plusieus traitement d'Anti-Alias.

Le resultat sera nettement plus esthétique et rapide.

     -dans le cas ou tu n'utilise pas le control "Ms script",je te le recommande vivement car il aide à evaluer n'importe quelle expression avec le compilateur VB6

                                                      Merci

Commentaire de Agaga le 15/09/2006 10:31:39

fadelovesky,

pour gdi, je vais me documenter, par contre pour le control Ms Script je ne l'utiliserai pas car l'analyseur syntaxique est l'un(voir LE) des principaux centre d'interet d'un tel programme.

Je te remercie pour tes remarques

A+

Commentaire de MALIKcpp le 16/07/2007 21:42:55

Rien a dire bravo, mais tu saviais qu'en basic tout cours tu peux faire un programme de ce type en moins de deux  et aussi complexe tu lui donne la fonction et il la réalise courbe ou non en fait il le trace point par point avec une fonction que tu définis !

#1, "set x y"

Commentaire de MALIKcpp le 16/07/2007 21:44:24

désolé pour les fautes d'orthographe ~~
                                      

Commentaire de Agaga le 16/07/2007 21:49:44

Salut,

alors j'ai pas bien compris ce dont tu parlais, mais me semble-t-il, ce n'est pas quelque chose de faisable sans en passer par un rajout de code dans ton programme, non ? Il faut absolument coder les fonctions a tracer en dur ?
Parce que sinon, je serai pas passé a coté d'un truc terrible pendant 13ans de ma vie !!! (depuis mon premier prog en Basic sur amstrad ;) ! )

Pour info, je suis sur le developpement d'un prog d'analyse syntaxique en c++ avec gestion d'environnment plus evolué qui se presentera sous forme de Dll et devrait donc etre bcp plus rapide que celui en VB :). De plus, il devrait etre facilement "pluggable" sur celui-ci.

A+


Agaga

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Je n'ai pas la fonction utlisataire d'analyse. [ par bienfaisant ] Bonjour,Je cherche à utiliser la fonction MOIS.DECALER dans une page excel mais je n'y arrive pas.Je suis actuellement sur office 2003.J'ai bien TRACEUR DE FONCTION [ par Apophis ] Je souhaite créer un programme permettant de tracer des fonctions comme sur une Texas par exemple.J'ai déjà commencé avec un picturebox pour tracer le TRACEUR DE FONCTION [ par Apophis ] Je souhaite créer un programme permettant de tracer des fonctions comme sur une Texas par exemple.J'ai déjà commencé avec un picturebox pour tracer le Problème avec la fonction Line [ par Manucom01 ] Je voudrais faire apparaître une ligne qui se redessine automatiquement en fonction de la position du curseur. AIDEZ-MOI!!!! Passage d'un controle en parametre d'une fonction [ par Cham ] Bonjour,Je souhaite passer un controle en parametre dans une fonction, et je n'y arrive pas. Voici mon source:' Je veux passer un controle en parametr Question à propos de la fonction WRITE (Répondez, vite !!) [ par spliter ] Je voudrais savoir si avec la fontion WRITE c'est possible de ne pas effacer le contenu que j'avais dans mon fichier .txt et continuer à la suite.si o Laisser tomber "Question à propos de la fonction WRITE" j'ai trouver ma réponse... [ par spliter ] laisser fairemerci quand même !! aide excel + declaration de fonction [ par yannickou ] Bonjour un petit coup de main me serait trés utile :Sous excel en VB j'utilise des forms.Dans ces forms sont décris des macros privées qui utilises de Problème avec fonction Format en Excel 97 [ par michx ] Salut,J'ai utilisé la fonction Format pour une date dans un formaulaire Excel (en VBa). La fonction passe sur mon portable mais pas sur celui d'une au [VB] Fonction Command() [ par Dinbougre ] eskil est possible avec la fonction command() de récuper + de 1 parametre? si oui comment? pcq moi il me ramène tout le bloc de paramètre en 1 chaine


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales