Intersection de segment de ligne, produit scalaire, produit croisé

Intersection de segment de ligne

Donnez les coordonnées de deux points de plusieurs segments de ligne et indiquez le nombre de points d'intersection des deux segments de ligne.
Condition 1: Le premier segment de ligne est complètement au-dessus (en dessous) du deuxième segment de ligne, on peut juger qu'il n'y a pas d'intersection.
Condition 2: Si AB et CD se croisent, alors A et B doivent être des deux côtés du CD, donc (CD × CA) (CD × CB) <0.
C et D doivent être des deux côtés de AB, donc (AC × AB) (AD × AB) <0.
Supposons A (x1, y1), B (x2, y2), C (x3, y3), D (x4, y4).
CA = (x1-x3, y1-y3), CB = (x2-x3, y2-y3).
CD = (x4-x3, y4-y3).
AC = (x3-x1, y3-y1), AD = (x4-x1, y4-y1).
AB = (x2-x1, y2-y1).
Donc, (CD × CA) (CD × CB) = ((x4-x3) (y1-y3) - (x1-x3) (y4-y3)) ((x4-x3) (y2-y3) - (x2 -x3) (y4-y3))> 0 tient,
ou (AC × AB) (AD × AB) = ((x3-x1) (y2-y1) - (x2-x1) (y3-y1)) (( x4-x1) (y2-y1) - (x2-x1) (y4-y1))> 0 est vrai, il
n'y a pas d'intersection.
Toutes les autres situations ont des intersections.

Multiplication de points:

x = (a1, a2,…, an) , y = (b1, b2,…, bn)
x · y = a1 b1 + …… + an bn.

Produit croisé:

Soit les coordonnées des deux vecteurs u (u1, u2, u3), v (v1, v2, v3).
Alors u × v = (u2 v3-u3 v2) - (u1 v3-u3 v1) + (u1 v2-u2 v1).
Formule de produit croisé vectoriel bidimensionnel: x1 y2-x2 y1.
Obtenir
la relation horaire et inverse entre les deux vecteurs: si l1 × l2> 0, alors l1 est dans le sens horaire de l2;
si l1 × l2 <0, alors l1 est dans le sens antihoraire de l2;
si l1 × l2 = 0, alors l1 et l2 sont colinéaires (peuvent être dans le même sens, ou inversés);

Je suppose que tu aimes

Origine blog.csdn.net/qq_47783181/article/details/112908676
conseillé
Classement