Courbes en tout genre

Soyez le premier à donner votre avis sur cette source.

Vue 6 766 fois - Téléchargée 715 fois

Description

J'aurais pu mettre ce prog dans la partie maths, mais bon, je l'ai mis là, alors ...

Ce programme trace des courbes selon un algorithme proposé.
Sélectionner la courbe dans la liste puis cliquer sur la feuille et voilà !

Le code est en VB 3 mais est compatible VB 6

Le ZIP contient :
- la feuille (présentée ici)
- le module (présentée ici)
- le fichier FRX
- le projet MAK
- l'EXE
- l'icone
taille : 7,44 Ko (2 sec max)

Source / Exemple :



:FICHIER MODULE :
Option Explicit Function ArcCos! (X) ArcCos = Atn(-X / Sqr(-X * X + 1)) + 1.5708 End Function Function ArcCoSec! (X) ArcCoSec = Atn(X / Sqr(X * X - 1)) + (Sgn(X) - 1) * 1.5708 End Function Function ArcCoTan! (X) ArcCoTan = Atn(X) + 1.5708 End Function Function ArcSec! (X) ArcSec = Atn(-X / Sqr(X * X - 1)) + Sgn(Sgn(X) - 1) * 1.5708 End Function Function ArcSin! (X) ArcSin = Atn(X / Sqr(-X * X + 1)) End Function Function CoSec! (X) CoSec = 1 / Sin(X) End Function Function CoTan! (X) CoTan = 1 / Tan(X) End Function Function HArcCos! (X) HArcCos = Log(X + Sqr(X * X - 1)) End Function Function HArcCoSec! (X) HArcCoSec = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X) End Function Function HArcCoTan! (X) HArcCoTan = Log((X + 1) / (X - 1)) / 2 End Function Function HArcSec! (X) HArcSec = Log((Sqr(-X * X + 1) + 1) / X) End Function Function HArcSin! (X) HArcSin = Log(X + Sqr(X * X + 1)) End Function Function HArcTan! (X) HArcTan = Log((1 + X) / (1 - X)) / 2 End Function Function HCos! (X) HCos = (Exp(X) + Exp(-X)) / 2 End Function Function HCoSec! (X) HCoSec = 2 / (Exp(X) - Exp(-X)) End Function Function HCoTan! (X) HCoTan = (Exp(X) + Exp(-X)) / (Exp(X) - Exp(-X)) End Function Function HSec! (X) HSec = 2 / (Exp(X) + Exp(-X)) End Function Function HSin! (X) HSin = (Exp(X) - Exp(-X)) / 2 End Function Function HTan! (X) HTan = (Exp(X) - Exp(-X)) / (Exp(X) + Exp(-X)) End Function Function Sec! (X) Sec = 1 / Cos(X) End Function
:FICHIER FEUILLE :
VERSION 2.00 Begin Form AppFrm AutoRedraw = -1 'True Caption = "Graphotraceur" ClientHeight = 6000 ClientLeft = 1095 ClientTop = 1485 ClientWidth = 7500 Height = 6405 Icon = FEU1_1.FRX:0000 Left = 1035 LinkTopic = "Feuille1" ScaleHeight = 400 ScaleMode = 3 'Pixel ScaleWidth = 500 Top = 1140 Width = 7620 Begin ComboBox LstGraph FontBold = 0 'False FontItalic = 0 'False FontName = "MS Sans Serif" FontSize = 8.25 FontStrikethru = 0 'False FontUnderline = 0 'False Height = 315 Left = 90 Style = 2 'Liste déroulante TabIndex = 1 Top = 90 Width = 2355 End Begin CheckBox CAutoCls Caption = "Effacer automatiquement" FontBold = 0 'False FontItalic = 0 'False FontName = "MS Sans Serif" FontSize = 8.25 FontStrikethru = 0 'False FontUnderline = 0 'False Height = 195 Left = 90 TabIndex = 0 TabStop = 0 'False Top = 450 Value = 1 'Coché Width = 1995 End Begin Line AxeOrd BorderColor = &H000000C0& X1 = 250 X2 = 250 Y1 = 0 Y2 = 400 End Begin Line AxeAbs BorderColor = &H000000C0& X1 = 0 X2 = 500 Y1 = 200 Y2 = 200 End End Option Explicit Dim gbw!, gbh! Sub Form_Click () Dim i! Dim x#, y# Dim dep!, fin!, pas!, coef! Dim ty% dep = -gbw / 50 fin = -dep pas = .01 coef = 50 On Error Resume Next If CAutoCls = 1 Then Cls forecolor = &H80000005 ty = LstGraph.ListIndex If ty < 0 Then LstGraph.SetFocus Exit Sub End If Randomize For i = dep To fin Step pas x = i Select Case ty Case 0 y = Cos(x) Case 1 y = Sin(x) Case 2 y = Tan(x) Case 3 y = Atn(x) Case 4 y = Log(x) Case 5 y = Exp(x) Case 6 y = Rnd(x) Case 7 y = Sqr(x) Case 8 y = Sec(x) Case 9 y = CoSec(x) Case 10 y = CoTan(x) Case 11 y = ArcSin(x) Case 12 y = ArcCos(x) Case 13 y = ArcSec(x) Case 14 y = ArcCoSec(x) Case 15 y = ArcCoTan(x) Case 16 y = HSin(x) Case 17 y = HCos(x) Case 18 y = HTan(x) Case 19 y = HSec(x) Case 20 y = HCoSec(x) Case 21 y = HCoTan(x) Case 22 y = HArcSin(x) Case 23 y = HArcCos(x) Case 24 y = HArcTan(x) Case 25 y = HArcSec(x) Case 26 y = HArcCoSec(x) Case 27 y = HArcCoTan(x) Case 28 y = x ^ 2 / Sqr(x) Case 29 y = Sqr(x) / x ^ 2 Case 30 y = x ^ 3 * Sqr(Sqr(x)) End Select x = x * coef y = y * coef Line Step(0, 0)-(x + gbw, -y + gbh) forecolor = &H80000008 PSet (x + gbw, -y + gbh) Next End Sub Sub Form_Load () LstGraph.AddItem "Cosinus" '0 LstGraph.AddItem "Sinus" '1 LstGraph.AddItem "Tangente" '2 LstGraph.AddItem "Arctangente" '3 LstGraph.AddItem "Logarithme népérien" '4 LstGraph.AddItem "Antilogarithme" '5 LstGraph.AddItem "Aléatoire" LstGraph.AddItem "Racine carrée" LstGraph.AddItem "Sécante" LstGraph.AddItem "Cosécante" LstGraph.AddItem "Cotangente" '10 LstGraph.AddItem "Arc Sinus" LstGraph.AddItem "Arc Cosinus" LstGraph.AddItem "Arc Sécante" LstGraph.AddItem "Arc Cosécante" LstGraph.AddItem "Arc Cotangente" '15 LstGraph.AddItem "Sinus hyperbolique" LstGraph.AddItem "Cosinus hyperbolique" LstGraph.AddItem "Tangente hyperbolique" LstGraph.AddItem "Sécante hyperbolique" LstGraph.AddItem "Cosécante hyperbolique"'20 LstGraph.AddItem "Cotangente hyperbolique" LstGraph.AddItem "Sinus hyperbolique inverse" LstGraph.AddItem "Cosinus hyperbolique inverse" LstGraph.AddItem "Tangente hyperbolique inverse" LstGraph.AddItem "Sécante hyperbolique inverse"'25 LstGraph.AddItem "Cosécante hyperbolique inverse" LstGraph.AddItem "Cotangente hyperbolique inverse" LstGraph.AddItem "Perso 1" LstGraph.AddItem "Perso 2" LstGraph.AddItem "Perso 3" '30 End Sub Sub Form_Resize () AxeAbs.X2 = scalewidth AxeAbs.Y1 = scaleheight / 2 AxeAbs.Y2 = AxeAbs.Y1 gbh = AxeAbs.Y1 AxeOrd.Y2 = scaleheight AxeOrd.X1 = scalewidth / 2 AxeOrd.X2 = AxeOrd.X1 gbw = AxeOrd.X1 Cls End Sub

Conclusion :


Il ne reste plus qu'à faire un interpréteur d'expréssion mathématique : l'utilisateur rentrera la formule et elle sera interprétée (comprise) par le programme ; mais ça, ... c'est pour plus tard !
Vous pouvez bien sûr changer la précision, l'échelle, mettre des nouvelles formules.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
60
Date d'inscription
mardi 4 septembre 2001
Statut
Membre
Dernière intervention
19 janvier 2009

C'est chouette, bravo
Messages postés
365
Date d'inscription
vendredi 24 mai 2002
Statut
Membre
Dernière intervention
18 octobre 2004

J'ai fini mon interpréteur d'expressions mathématiques, il intègre 4 constantes, 22 opérateurs et 34 fonctions. Mais pour le moment, on est obligé de mettre des parenthèses à chaque fonction, si ça vous intéresse, je mettrais ptête la source un jour ;)
Messages postés
365
Date d'inscription
vendredi 24 mai 2002
Statut
Membre
Dernière intervention
18 octobre 2004

Attendez, c la première fois qu'on me félicite pour mes sources. Allors, déjà, merci.
Pour ces équations, ben, elles sont simplement dans l'aide de VB 3 à la page "fonctions mathématiques dérivées". J'ai pas eu trop à me casser la tête. J'ai simplement employé toutes les fonctions mathématiques que j'ai trouvés dans le langage. Eh, ATH|500|, faut dormir la nuit !
Messages postés
155
Date d'inscription
mardi 7 août 2001
Statut
Membre
Dernière intervention
30 janvier 2008

OH MON DIEU JE SENS QUE JE VAIS JOUIR !!!
Messages postés
68
Date d'inscription
dimanche 31 mars 2002
Statut
Membre
Dernière intervention
18 janvier 2010

c super ! ou t'a trouver toutes ces equations ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.