Comment vérifiez-vous l'intersection entre un segment de ligne et un rayon de ligne émanant d'un point situé à un angle de l'horizontale?
Donné un segment de ligne, qui est de deux points (x1,y1) et (x2,y2), un point P(x,y) et un angle theta. Comment pouvons-nous savoir si ce segment de la ligne et de la ligne de ray qui émane de P à un angle thêta de l'horizontale coupe ou pas? S'ils ne se croisent, comment trouver le point d'intersection?
source d'informationauteur Paagalpan
Vous devez vous connecter pour publier un commentaire.
Laisser l'étiquette les points q = (x1y1) et q + s = (x2y2). Donc s = (x2 − x1y2 − y1). Le problème ressemble à ceci:
Laisser r = (cos θ, sin θ). Alors tout point sur le rayon passant par p est représentable comme p + t r (pour un paramètre scalaire 0 ≤ t) et tout point sur le segment de ligne est représentable comme q + u s (pour un paramètre scalaire 0 ≤ u ≤ 1).
Les deux droites se coupent si nous pouvons trouver t et u tels que p + t r = q + u s:
Voir cette réponse comment trouver ce point (ou de déterminer qu'il n'existe pas de point).
Alors votre segment de ligne coupe le rayon si 0 ≤ t et 0 ≤ u ≤ 1.
Voici un code C# pour l'algorithme donné dans d'autres réponses:
Grâce Gareth pour une grande réponse. Voici la solution mise en œuvre en Python. N'hésitez pas à retirer les tests et il suffit de copier-coller de la fonction réelle. J'ai suivi la rédaction des méthodes qui est apparu ici, https://rootllama.wordpress.com/2014/06/20/ray-line-segment-intersection-test-in-2d/.