
Auteur : Psychophanta
| | Version : 20/02/2008 | | |
| |
Les procédures ci dessous permettent de maintenir un angle dans un intervalle :
- WrapAngleSigned(angle.f) maintient un angle en radian entre [-Pi,Pi]
- WrapAngleDegSigned(angle.f) maintient un angle en degré entre [-180,180]
- WrapAngleUnsigned(angle.f) maintient un angle en radian entre [0,2*Pi]
- WrapAngleDegUnsigned(angle.f) maintient un angle en degré entre [0,360]
Procedure.f WrapAngleSigned(angle.f)
!fldpi
!fadd st0,st0
!fld dword[p.v_angle]
!fprem1
!fstp st1
ProcedureReturn
EndProcedure
Procedure.f WrapAngleDegSigned(angle.f)
!fild dword[@f]
!fld dword[p.v_angle]
!fprem1
!fstp st1
ProcedureReturn
!@@:dd 360
EndProcedure
Procedure.f WrapAngleUnsigned(angle.f)
!fldpi
!fadd st0,st0
!fld dword[p.v_angle]
!fprem
!fadd st1,st0
!fldz
!fcomip st1
!fcmovnbe st0,st1
!fstp st1
ProcedureReturn
EndProcedure
Procedure.f WrapAngleDegUnsigned(angle.f)
!fild dword[@f]
!fld dword[p.v_angle]
!fprem
!fadd st1,st0
!fldz
!fcomip st1
!fcmovnbe st0,st1
!fstp st1
ProcedureReturn
!@@:dd 360
EndProcedure
angle.f=45
angleadd.f=-90
angle.f=WrapAngleDegUnsigned(angle.f+angleadd.f)
Debug angle
angle.f=45
angleadd.f=-90
angle.f=WrapAngleDegSigned(angle.f+angleadd.f)
Debug angle
angle.f=#PI/4.0
angleadd.f=-#PI/2.0
angle.f=WrapAngleUnsigned(angle.f+angleadd.f)
Debug angle
angle.f=#PI/4.0
angleadd.f=-#PI/2.0
angle.f=WrapAngleSigned(angle.f+angleadd.f)
Debug angle
|
|
Consultez les autres pages sources
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2008
Developpez LLC. Tout droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|