Courbes en tout genre

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

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.