permet de dire que nous avons 4 Comment puis-je détecter si les 2 lignes croient? Je me fiche d'où ils traversent, je veux juste savoir s'ils se croisent. P> vector2 code>'s (oui ceci est 2d), nous avons donc LineONESTART, LINEONEEND, LINESTWOSTART et LINETWOEND. P>
3 Réponses :
Vérifiez cette formule par Bourke . P>
J'ai récemment dû résoudre ce problème aussi. Une autre option utilise (obtention) l'équation de la ligne ( Comme mentionné par Andiog, un autre site que j'ai utilisé (l'exemple est excellent aussi) est-ce Tutoriel . Comme il s'agit de xna, le deuxième lien sera juste dans votre rue. P>
EDIT (Contenu du lien brisé) strong>: p>
Les équations des lignes sont résolution du point où substituer l'une de ces personnes dans l'équation correspondante de la ligne donne le point d'intersection. Par exemple, le point d'intersection (x, y) est
Notes:
Les dénominateurs pour les équations pour UA et UB sont les mêmes.
Si le dénominateur pour les équations pour UA et UB est 0, les deux lignes sont parallèles.
Si le dénominateur et le numérateur des équations pour UA et UB sont 0, les deux lignes sont coïncidentes.
Les équations s'appliquent aux lignes, si l'intersection des segments de ligne est requise, il n'est nécessaire que de tester si UA et UB se situent entre 0 et 1. Dans la partie éventuelle de cette plage, le segment de ligne correspondant contient le point d'intersection. Si les deux se trouvent dans la plage de 0 à 1, le point d'intersection est dans les deux segments de ligne. P> y = mx + C code>) mais il y a plusieurs cas de bord à laquelle vous devez vous soucier, ainsi que vérifier si le point d'intersection est dans le segment de ligne. La formule du lien ci-dessus fonctionne, bien que je ne puisse pas vraiment commenter comment l'équation est réorganisée, tout ce que je vais dire, c'est ça fonctionne;) p>
PA = P1 + UA (P2 - P1) Code> et
PB = P3 + UB (P4 - P3) CODE> P> P>
pa = pb code> donne les deux équations suivantes dans deux inconnues (UA et UB)
x1 + ua (x2 - x1) = x3 + ub (x4 - x3) code>
et
Y1 + UA (Y2 - Y1) = Y3 + UB (Y4 - Y3) Code>
La résolution donne les expressions suivantes pour UA et UB P>
x = x1 + ua (x2 - x1) code>
Y = Y1 + UA (Y2 - Y1) CODE> P>
+1 pour citer la collection d'algorithmes de géométrie de Bourke. Je l'utilise tout le temps, c'est génial.
@Filip j'ai corrigé le lien brisé!
Pour l'exhaustivité, je comprendrai sous l'algorithme lorsque des lignes sont représentées dans trouver les coordonnées homogènes du point comme p>
Si les lignes sont parallèles, alors sinon le point d'intersection est situé à p>
(A, B, C) CODE> coordonnées de manière à ce que l'équation de la ligne soit
a * x + b * y + c = 0 code>.
(A1, B1, C1) CODE> et
(A2, B2, C2) CODE> Intersect à un point
(x, y) Code> li>
a= -sin(θ);
b= cos(θ);
c= x*sin(θ)-y*cos(θ);
w = 0 code>. p> li>
a= y1-y2;
b= x2-x1;
c= x1*y2-y1*x2;