Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3109 connectés 

 


Dernière réponse
Sujet : [Algo/Delphi] Detection de collision par triangularisation.
Slide Je sais qu'il n'y a pas de result, car j'en ai pas encore fait, pour le moment je me contante du "beep" pour faire buzzer mon ordinateur quand il y a collision.

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Slide Je sais qu'il n'y a pas de result, car j'en ai pas encore fait, pour le moment je me contante du "beep" pour faire buzzer mon ordinateur quand il y a collision.
Slide J'ai donc essayer la technique de triangularisation afin de detecté les colisions.
 
Le Schema :
 
http://www.ifrance.com/yepslide/3Pts.jpg  
 
Le code pour ce shéma (C'est du Delphi, ca ressemble d'apres certain, bcp au c++)  :
 

Code :
  1. type TSpacePoint = packed record
  2.   X: Double;
  3.   Y: Double;
  4.   Z: Double;
  5. end;


 

Code :
  1. function TForm1.CollisionTriangulisation(Const X,Y,Z:Double; Const point1,point2,point3:TSpacePoint):boolean;
  2. var compteurmemo:integer;
  3. CoeffA1,PtsOrigineB1,Ycomp1:Double;
  4. CoeffA2,PtsOrigineB2,Ycomp2:Double;
  5. CoeffA3,PtsOrigineB3,Ycomp3:Double;
  6. begin
  7. //ax+b=y
  8. CoeffA1:=(point2.x-point1.x)/(point2.y-point1.y);
  9. PtsOrigineB1:=point2.y-((point2.x-point1.x)/(point2.y-point1.y))*point2.x;
  10. CoeffA2:=(point3.x-point2.x)/(point3.y-point2.y);
  11. PtsOrigineB2:=point3.y-((point3.x-point2.x)/(point3.y-point2.y))*point3.x;
  12. CoeffA3:=(point1.x-point3.x)/(point1.y-point3.y);
  13. PtsOrigineB2:=point1.y-((point1.x-point3.x)/(point1.y-point3.y))*point1.x;
  14. Ycomp1:=CoeffA1*X+PtsOrigineB1;
  15. Ycomp2:=CoeffA2*X+PtsOrigineB2;
  16. Ycomp3:=CoeffA3*X+PtsOrigineB3;
  17. If ((Y>Ycomp1) and (Y<Ycomp2) and (Y<Ycomp3)) then beep;
  18. end;


[#f00e00]X,Y est la coordonné du point à tester, Z, n'est pas pris en compte pour le moment.[#000000]
 
Avec ce code, normalement ca devrait marché, mais, ca ne marche pas comme je l'aurais voulu.
 
Si quelqu'un pouvais corrigé eventuelement une erreur ou un oublie de ma parre, merci enormement.


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)