[Algo/Delphi] Detection de collision par triangularisation.

Detection de collision par triangularisation. [Algo/Delphi] - Programmation

Marsh Posté le 29-07-2002 à 19:40:35    

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.

Reply

Marsh Posté le 29-07-2002 à 19:40:35   

Reply

Marsh Posté le 29-07-2002 à 19:43:36    

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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed