2009-10-13 4 views
5

J'ai mis au point une méthode pour tester si deux segments de ligne/gammes unidimensionnels.Test d'intersection des segments de ligne/plages unidimensionnels: Nom de la solution?

définissant donc une gamme aussi:

[min, max] 

Compte tenu de deux instances de gamme:

a = [min, max] 
b = [min, max] 

J'utilise ce qui suit pour vérifier si elles se croisent:

(a.max - b.min) * (b.max - a.min) >= 0. 

Je pense que ce est un produit croisé unidimensionnel, donc ma question est:

Cette solution est-elle classifiée comme un produit croisé unidimensionnel ou autre?

+0

La généralisation des produits croisés est le produit de coin qui produit l'algèbre extérieure d'un espace vectoriel. https://en.wikipedia.org/wiki/Exterior_algebra –

Répondre

8

Que diriez-vous:

intersects = !((a.max < b.min) || (b.max < a.min)) 

C'est plus rapide (pas impliqué se multiplient et un compilateur décent optimiser le PAS loin) et tout aussi lisible.

+0

Belle solution Aaron, je suis d'accord c'est plus clair que ma solution, je pense que je vais l'utiliser à la place dans mon code :) –

1

Un produit croisé unidimensionnel est simplement x*y pour x et y les deux nombres réels. Donc je suppose que vous pourriez appeler cela un produit croisé unidimensionnel, mais c'est juste un nom de fantaisie pour une multiplication.

C'est une astuce mignonne, mais je ne pense pas qu'elle ait une conséquence mathématique particulière. Les produits croisés concernent tous les vecteurs, pas les segments de ligne.

+0

Merci Peter, oui je cherchais juste un nom de fantaisie :) –