2010-08-10 12 views
10

Tengo una línea (x1, y1) y (x2, y2). Me gustaría usar tan inverso para encontrar el ángulo de esa línea, ¿cómo lo haría en Java?¿Cómo encuentro la tangente inversa de una línea?

Me gustaría ver qué ángulo de la línea hace en relación a x1, y1

+2

Una línea por sí sola no tiene un ángulo a menos que sea en referencia a algo. ¿Cuál es tu punto de referencia? 0,0? –

+0

Editado mi pregunta para que quede más claro – Skizit

+2

@Meow, no existe un ángulo entre una línea y un punto en esa línea; ¿te refieres a lo que se describió en la respuesta de @ stacker? – Pops

Respuesta

23

Es necesario

Math.toDegrees (Math.atan ((Y2-Y1)/(X2 x1)))

Observe la excepción cuando x1 = x2.

+2

Use atan2 y puede evitar eso. –

+1

¿Por qué esto devolvería un ángulo negativo? – Skizit

+1

Porque atan devuelve valor entre (-Pi/2, Pi/2). Use Math.atan2(). Parece que maneja problemas del uso de Math.atan. Si necesita un valor positivo, simplemente agregue 2 * Pi si se recibe un valor negativo. – Gedrox

20

Utilice la función Math.atan2. Es como arctan pero conoce las coordenadas xey, por lo que puede manejar líneas que son horizontales, verticales o apuntando en otras direcciones. El rango de arctan de -pi/2 a pi/2 no dará la respuesta correcta para algunas líneas .

15

La función atan2 ayuda a resolver este problema al tiempo que se evitan las condiciones de contorno como la división por cero.

Math.atan2(y2-y1, x2-x1) 
Cuestiones relacionadas