Slide | J'ai donc essayer la technique de triangularisation afin de detecté les colisions.
Le Schema :
Le code pour ce shéma (C'est du Delphi, ca ressemble d'apres certain, bcp au c++) :
Code :
- type TSpacePoint = packed record
- X: Double;
- Y: Double;
- Z: Double;
- end;
|
Code :
- function TForm1.CollisionTriangulisation(Const X,Y,Z:Double; Const point1,point2,point3:TSpacePoint):boolean;
- var compteurmemo:integer;
- CoeffA1,PtsOrigineB1,Ycomp1:Double;
- CoeffA2,PtsOrigineB2,Ycomp2:Double;
- CoeffA3,PtsOrigineB3,Ycomp3:Double;
- begin
- //ax+b=y
- CoeffA1:=(point2.x-point1.x)/(point2.y-point1.y);
- PtsOrigineB1:=point2.y-((point2.x-point1.x)/(point2.y-point1.y))*point2.x;
- CoeffA2:=(point3.x-point2.x)/(point3.y-point2.y);
- PtsOrigineB2:=point3.y-((point3.x-point2.x)/(point3.y-point2.y))*point3.x;
- CoeffA3:=(point1.x-point3.x)/(point1.y-point3.y);
- PtsOrigineB2:=point1.y-((point1.x-point3.x)/(point1.y-point3.y))*point1.x;
- Ycomp1:=CoeffA1*X+PtsOrigineB1;
- Ycomp2:=CoeffA2*X+PtsOrigineB2;
- Ycomp3:=CoeffA3*X+PtsOrigineB3;
- If ((Y>Ycomp1) and (Y<Ycomp2) and (Y<Ycomp3)) then beep;
- 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. |