2010-08-26 18 views
5

Schematicpuntos de intersección entre la línea y el rectángulo

tengo una línea dada R definida por un ángulo α. R pasa por el origen de mi avión. También tengo un rectángulo, con ancho y altura conocidos. El rectángulo tiene su esquina inferior izquierda en el origen.

Una nueva línea, paralela a R, se define por una distancia L desde R (tome A, B y C como ejemplos). Me gustaría encontrar los puntos donde la nueva línea interseca el rectángulo (como P1 y P2 para la línea A, P3 y P4 para B, y P5 y P6 para C).

¿Cuál es la mejor manera de encontrarlo?

+0

La mejor manera es probablemente http://math.stackexchange.com/ :) – sth

+0

¿Cómo se define L para cada lado de R? ¿Puede R tener una pendiente negativa o es alfa siempre de 0 a 90 grados? – phkahler

Respuesta

1
  1. sabiendo R (x) y la distancia L se puede obtener fácilmente la función para B (x)
  2. rectángulo puede ser representada como 4 líneas, es decir, 4 funciones simples R1 (x), R2 (x), R3 (x), R4 (x)
  3. tienes que resolver 4 equitaciones combinadas: {A (x); R1 (x)}, {A (x); R2 (x)}, etc
  4. comprobar las intersecciones con líneas si están dentro de los límites del rectángulo utilizando el punto base del rectángulo, ancho y alto (y ángulo de inclinación en caso general)
4

Utilice esta página http://local.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/

da la fórmula para la intersección de dos líneas. Intersecte con cada una de las 4 líneas que forman el rectángulo por separado, y luego verifique que u_a (el lugar de intersección parametrizado por una línea rectangular) está entre los límites correctos, para asegurarse de que su línea no lo interseca fuera del rectángulo.

Tenga en cuenta que necesitará puntos reales, no ángulos para esto, pero es muy fácil de calcular. La línea que pasa por el origen es simplemente (0,0) -> (cos (a), sen (a))

Línea x distancia de ella, paralelo es (0,0) + x * (sin (a), - cos (a)) -> (cos (a), sin (a)) + x * (sin (a), - cos (a))

porque como pueden notar, (sin a), -cos (a)) es solo un vector de longitud de unidad que es perpendicular a su línea, por lo que solo debe agregarlo en la parte superior de ambos puntos que forman su línea original.

Cuestiones relacionadas