Direct math - une dll de math pas fini ...

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 488 fois - Téléchargée 26 fois

Contenu du snippet

J'ai que que 14 ans et j'est eu envie de développer une DLL de Math pour me simplifier la vie. Et la je suis bloqué sur le Sinus et le Tangent. Faudra que j'attende l'année prochaine pour continuer mais je suis trop impatient donc je poste le code, si vos pouvez m'aider à trouver l'hypoténuse d'un triangle grace à Cos, Sin ou Tan, faite le moi savoir svp. Il y à 2 module de classe, 1 pour les calculs simple :
- Addition
- Soustraction
- Multiplication
- Division
- Modulo
- Carré
- Cube
Et il y en a 1 autre pour la trygonométrie avec quelques fonction :
- Cosinus
- Sinus
- Tangent
- Pythagore (pour trouver une hypoténuse grace à Pythagore)
- Adjacent (Pour trouver le coté adjacent d'un triangle rectangle grace à Cos)

Et voila, ya que sa alors qu'il en faudra 2 fois plus ... lol

Aidez moi svp !!!!

Source / Exemple :


' Module Calculs.cls

' Oblige la déclaration des variables
Option Explicit
Private I As Integer
Public NUM1 As Double
Public NUM2 As Double
Public NUM3 As Double
Public NUM4 As Double
Public Tag As Variant
Public Function Addition(W As Double, X As Double, Optional Y As Double, Optional Z As Double) As Double
' Ajoute tous les nombre entre eux
    Addition = W + X + Y + Z
End Function
Public Function Soustraction(W As Double, X As Double, Optional Y As Double, Optional Z As Double) As Double
' Retranche tous les nombre entre eux
    Soustraction = W - X - Y - Z
End Function
Public Function Multiplication(W As Double, X As Double, Optional Y As Double, Optional Z As Double) As Double
' Multiplie tous les nombre entre eux si Z et Y <> 0
    If (Y <> 0) And (Z <> 0) Then
        Multiplication = W * X * Y * Z
    End If
' Multiplie W et X si Y et Z = 0
    If (Z = 0) And (Y = 0) Then
' Effectue une multiplication à deux chiffres
        Multiplication = W * X
    End If
' Teste si Z = 0
    If (Z = 0) Then
' Multiplie W, X et Y
        Multiplication = W * X * Y
    End If
' Teste si Y = 0
    If (Y = 0) Then
' Multiplie W, X et Z
        Multiplication = W * X * Z
    End If
End Function
Public Function Division(W As Double, X As Double) As Variant
' Teste si X = 0
    If (X = 0) Then
        Division = "Erreur : Division par 0"
' Quitte la procédure
        Exit Function
    End If
' Effectue la division
    Division = W / X
End Function
Public Function Modulo(W As Double, X As Double) As Variant
' Teste si X = 0
    If (X = 0) Then
        Modulo = "Erreur : Division par 0"
' Quitte la procédure
        Exit Function
    End If
' Effectue la division et trouve le reste
    Modulo = W Mod X
End Function
Public Function Carre(X As Double) As Double
' Trouve le carre de X
    Carre = X * X
End Function
Public Function Cube(X As Double) As Double
' Trouve le cube de X
    Cube = X * X * X
End Function

' Module Trygonometrie.cls

' Oblige la déclaration des variables
Option Explicit
' Point du triangle
Public X As Double
Public Y As Double
Public Z As Double
' Angle du triangle
' AX = 90° car Cos, Sin et Tan veulent un angle droit
Public AY As Double
Public AZ As Double
' Coté du triangle
Public XY As Double
Public ZX As Double
Public YZ As Double
' Fonctions
Public Function Cosinus(Angle As Double) As Double
' Retourne le cosinus d'un angle
    Cosinus = Cos(Angle)
End Function
Public Function Sinus(Angle As Double) As Double
' Retourne le sinus d'un angle
    Sinus = Sin(Angle)
End Function
Public Function Tangent(Angle As Double) As Double
' Retourne le tangean d'un angle
    Tangent = Tan(Angle)
End Function
Public Function Pythagore(Oppose As Double, Adjacent As Double) As Double
' Utilise Pythagore pour trouver l'hypoténuse
    Pythagore = (Oppose * Oppose) + (Adjacent * Adjacent)
End Function
Public Function Adjacent(Hypotenuse As Double, Optional AY As Double) As Double
' Utilise cosinus pour trouver le coté adjacent du triangle XYZ
    Adjacent = Cos(AY) * Hypotenuse
End Function

Conclusion :


Aidez moi sinon je vais déprimer !! lol
Commentez ce code et notez le svp ! (n'oubliez pas qu'il n'est pas fini)

A voir également

Ajouter un commentaire

Commentaires

hajjoubi
Messages postés
7
Date d'inscription
dimanche 14 octobre 2007
Statut
Membre
Dernière intervention
10 juin 2010
-
slt les amis
je savoir comment je peux calculer les opérations de: cos(x) et sin(x) et tan(x)
et merci d'avance
ciberrique
Messages postés
591
Date d'inscription
lundi 25 août 2003
Statut
Membre
Dernière intervention
18 juillet 2010
-
Si cela t'interresse tu peux faire quelque opération avec ces fonctions :

Abs = valeur absolue

Pour avoir Pi :

Atn(1) 45° Pi/4 radians
donc Pi = Atn(1) × 4

Atn renvoyant l'arctangeante d'un nombre ( tant - 1)

Pour arcsinus tu fais :
Atn(X / Sqr(-X * X + 1)) X = nombre

Pour ArcCosinus :
Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)

pour mettre une puissance :

nombre^exposant

Int et Fix renvoie les parties entiére d'un nombre
Rnd renvoie un nombre aléatoire compris entre 0 et 1
Sgn renvoie le signe d'un nombre
Sgr renvoie la racine carré

Round arrondi un nombre au nombre de décimal choisi

d'autre précision :

tan a = sin a/cos a

cos a/sin a = 1/tan a

sin2 a + cos2 a = 1
sin2 a = 1 - cos2 a
cos2 a = 1 - sin2 a

cos (a+b) = cos a cos b - sin a sin b
sin (a+b) = sin a cos b + sin b cos a
cos (a-b) = cos a cos b + sin a sin b
sin (a-b) = sin a cos b - sin b cos a
tan (a+b) = tan a + tan b/1- tan a tan b
tan (a-b) = tan a - tan b/1+ tan a tan b

sin 2a = 2 sin a cos a
cos 2a = cos2 a - sin2 a
cos 2a = 2 cos2a - 1
cos 2a= 1-2 sin2 a
tan 2a = 2 tan a/1 - tan2 a

sin (- a) = - sin a
cos (- a) = cos a
tan (- a) = - tan a

sin (p - a) = sin a
cos (p - a) = -cos a
tan (p - a) = -tan a


sin (p + a) = -sin a
cos (p + a) = -cos a
tan (p + a) = tan a

sin (p/2 - a) = cos a
cos (p/2 - a) = sin a

sin (p/2 + a) = cos a
cos (p/2 + a) = sin a

Dans un triangle, régle de cosinus (Al Kashi, pythagore vient de cela) :

a2 = b2 + c2 - 2bc cos A
b2 = a2 + c2 - 2ac cos B
c2 = a2 + b2 - 2bc cos C


Je sais pas si cela te servira, mais sait on jamais ....

a+
cs_Light Angel
Messages postés
48
Date d'inscription
dimanche 9 mai 2004
Statut
Membre
Dernière intervention
1 janvier 2005
-
En effet, j'avais pas penser à sa. Mais je voudrais savoir un truc, ece que une DLL activeX ecrite en VB peut etre utiliser en C++ ! (Et au passage, celui qui m'a mis 1/10 est un peu dégeulasse, j'avais prévenus que c'était pas la version finale !)
Sinon, pour répondre au question de bouv, mettre une fonction Multiplication ne sert en effet à rien mais j'avais envie de taper du code lol. Et puis j'aurais surtout besoin d'aide pour calculer des puisances( j'ai beaucoup réfléchi et j'ai pas trouver, sa doit être un truc tout con comme d'habitudes). Et j'ai surtout besoin d'aide pour les autre fonction de trygo. Je suis en 4eme et j'ai appris que le cosinus ...
bouv
Messages postés
1429
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
-
Qq conseil,
Evite d'utiliser le type Variant. C'est un fourre tout qui doit être évité au maximum.
Il est d'ailleurs déconseillé dans les 300 et quelques recommandations Microsoft.

Pour exemple :

Public Function Division(W As Double, X As Double) As Double
If (X = 0) Then
MsgBox "Erreur : Division par 0"
Division = 0
Else
Division = W / X
End if
End Function

Mais ne décourageons pas les néophites dont je fait également partis. Ma première source était un lecteur multimedia utilisant l'OCX WMP. Je croyais avoir fait un découverte énorme.

Le seul truc c'est que je ne vois pas pourquoi je ferai
Resultat = Multiplication X, Y
Au lieu de
Resultat = X * Y

C'est bcp plus long. De plus faire appel à un module est plus long que de mettre le code directement dans ta fonction. (euh je parle français là !). Surtout pour si peu.
Si tu veux continuer sur ce chemin, je pense qu'il faut que tu apporte un petit plus, sinon je ne vois pas vraiment d'intérêt car tu n'utilise que des fonctions natives de VB.

Voila, je noterai qd ce sera terminé
++
cs_jp50
Messages postés
45
Date d'inscription
samedi 14 avril 2001
Statut
Membre
Dernière intervention
3 janvier 2008
-
Je ne voit pas vraiment l'intérêt de cette source, tu pourrais ajouter d'autres fonctions trigonométriques. En passant dans pythagore, il y a la racine carrée.

Pythagore =sqr( (Oppose * Oppose) + (Adjacent * Adjacent))

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.