je change de sujet
j'ai testé le cross product et la fonction normalize, c'est ok !
par contre je n'arrive pas à utiliser la fonction dotproduct !
Fonction Normalize
Code : Tout sélectionner
Structure Vector3D
x.f
y.f
z.f
EndStructure
Define.Vector3D N,V1,V2,*R
V1\x=6 : V1\y=1 : V1\z=7
V2\x=6 : V2\y=1 : V2\z=7
Macro NORME(V)
(Sqr(V\x * V\x + V\y * V\y + V\z * V\z))
EndMacro
Procedure Normalize(*N.Vector3D)
Define.f NormeVecteur
NormeVecteur = NORME(*N)
If NormeVecteur <> 0
*N\x / NormeVecteur
*N\y / NormeVecteur
*N\z / NormeVecteur
EndIf
EndProcedure
Normalize(@V1)
D3DRMVectorNormalize_(@V2)
Debug "-- Normalize --"
Debug V1\x
Debug V1\y
Debug V1\z
Debug "-----"
Debug V2\x
Debug V2\y
Debug V2\z
Fonction CrossProduct
Code : Tout sélectionner
Structure Vector3D
x.f
y.f
z.f
EndStructure
Define.Vector3D N,V1,V2,*R
Procedure PRODUIT_VECTORIEL(*N.Vector3D, *V1.Vector3D, *V2.Vector3D)
*N\x = ((*V1\y * *V2\z) - (*V1\z * *V2\y))
*N\y = ((*V1\z * *V2\x) - (*V1\x * *V2\z))
*N\z = ((*V1\x * *V2\y) - (*V1\y * *V2\x))
EndProcedure
V1\x=2 : V1\y=3 : V1\z=7
V2\x=6 : V2\y=5 : V2\z=1
N\x=0 : N\y=0 : N\z=0
D3DRMVectorCrossProduct_(@N,@V1,@V2)
Debug "-- Cross Product --"
Debug N\x
Debug N\y
Debug N\z
Debug "-----"
V1\x=2 : V1\y=3 : V1\z=7
V2\x=6 : V2\y=5 : V2\z=1
N\x=0 : N\y=0 : N\z=0
PRODUIT_VECTORIEL(@N,@V1,@V2)
Debug N\x
Debug N\y
Debug N\z
Debug "-----"
Et le DotProduct ne fonctionne pas ? ou je merdouille ?
La fonction retourne l'adresse du premier paramètre.
Code : Tout sélectionner
Structure Vector3D
x.f
y.f
z.f
EndStructure
Define.Vector3D N,V1,V2,*R
V1\x=6 : V1\y=1 : V1\z=7
V2\x=6 : V2\y=1 : V2\z=7
Procedure.f PRODUIT_SCALAIRE(*V1.Vector3D, *V2.Vector3D)
ProcedureReturn (*V1\x * *V2\x + *V1\y * *V2\y + *V1\z * *V2\z)
EndProcedure
Debug PRODUIT_SCALAIRE(@V1,@V2)
Debug D3DRMVectorDotProduct_(@V1,@V2)
Debug @V1