Salut,
ta compréhension de Pythagore est bonne, elle s'applique même aux système à trois dimensions...sauf qu'à ce moment on parlerais plutôt de modules de vecteurs
en passant, tu t'assure que chacune des expressions au carrées sont positive, en réalité, qu'elles soient positives ou non, une fois au carrée, le signe disparait, ce bout du code peut être éliminer....
je persiste à dire que la technique la plus efficace pour obtenir une distance est celle ci:
#define GetDistance(%0,%1,%2,%3,%4,%5) (floatround(((%0 - %3) * (%0 - %3)) + ((%1 - %4) * (%1 - %4)) + ((%2 - %5) * (%2 - %5))))
Cette "fonction" s'utilise comme ceci: new Float:Distance = GetDistance(X1, Y1, Z1, X2, Y2, Z2);
EDIT:
PS. Sur ton image tu soustrais les deux valeurs, tu doit les additionner
Si l'on prend ta technique avec Pythagore, tu as par exemple:
A = Distance entre les deux points en X
B = distance entre les deux points en Y
C = distance entre les deux points en Z
Tu commence en calculant la distance dans un seul plan :
A² + B² = D²
donc tu n'as plus que deux distance, celle dans le plan X, Y et celle qui y est perpendiculaire, C
Puisque ces deux distances sont perpendiculaires, on peut y voir un triangle rectangle dont les cathetes sont D et C
On peut donc calculé la distance totale (appelée E ici) à l'aide d'un second Pythagore
D² + C² = E²
après remplacement, on obtient:
A² + B² + C² = E²
(A² + B² + C²) ^0.5 = E
en mots: La distance entre les deux points = racine carrée de (A² + B² + C²)
soit la fonction que j'aie écrite ci-dessus
++Sim++