2010-08-26 6 views
5

Schematicpoints d'intersection entre la ligne et le rectangle

I ont une ligne R donnée définie par un angle α de. R passe par l'origine de mon avion. J'ai aussi un rectangle, avec une largeur et une hauteur connues. Le rectangle a son coin inférieur gauche sur l'origine.

Une nouvelle ligne, parallèle à R, est définie par une distance L de R (prendre A, B et C comme exemples). Je voudrais trouver les points où la nouvelle ligne coupe le rectangle (comme P1 et P2 pour la ligne A, P3 et P4 pour B, et P5 et P6 pour C).

Quelle est la meilleure façon de le trouver?

+0

La meilleure façon est probablement http://math.stackexchange.com/ :) – sth

+0

Comment L est-il défini pour chaque côté de R? Est-ce que R peut avoir une pente négative ou alpha est toujours 0-90 degrés? – phkahler

Répondre

1
  1. savoir R (x) et de la distance L on peut facilement obtenir la fonction B (x)
  2. rectangle
  3. peut être représenté par 4 lignes, soit 4 fonctions simples R1 (x), R2 (x), R3 (x), R4 (x)
  4. vous devez résoudre 4 équations combinées: {A (x); R1 (x)}, {A (x), R2 (x)}, etc
  5. vérifier les intersections trouvées avec des lignes si elles sont dans les limites du rectangle en utilisant le point de base, la largeur et la hauteur du rectangle (et l'angle d'inclinaison dans le cas général)
4

Utiliser cette page http://local.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/

donne la formule pour l'intersection de deux lignes. Intersecter avec chacune des 4 lignes qui composent le rectangle séparément, puis vérifier que u_a (l'endroit d'intersection paramétré par une ligne rectangle) est entre les bornes correctes, pour s'assurer que votre ligne ne l'intersecte pas en dehors du rectangle.

Notez que vous aurez besoin de points réels et non d'angles pour cela, mais il est très facile de les calculer. ligne passant par l'origine est simplement (0,0) -> (cos (a), sin (a))

ligne x distance de celui-ci, parallèle est (0,0) + x * (sin (a), - cos (a)) -> (cos (a), sin (a)) + x * (sin (a), - cos (a))

parce que vous pouvez le remarquer, (péché (a), -cos (a)) est juste un vecteur de longueur unitaire qui est perpendiculaire à votre ligne, donc vous l'ajoutez juste au-dessus des deux points qui forment votre ligne d'origine.

Questions connexes