2010-08-10 11 views
10

Mam linię (x1, y1) i (x2, y2). Chciałbym użyć opalenizny tan, aby znaleźć kąt tej linii, w jaki sposób zrobiłbym to w Javie?Jak znaleźć odwrotną styczną linii?

Chciałbym zobaczyć, co sprawia, że ​​kąt linii w stosunku do x1, y1

+2

Linia sama w sobie nie ma kąta, chyba że chodzi o coś. Jaki jest twój punkt odniesienia? 0,0? –

+0

Edytowałem moje pytanie, aby było jaśniejsze. – Skizit

+2

@Mow, nie ma czegoś takiego jak kąt między linią a punktem na tej linii; czy masz na myśli to, co zostało opisane w odpowiedzi @ stackera? – Pops

Odpowiedz

23

Trzeba

Math.toDegrees (Math.atan ((y2-y1)/(x2- x1)))

Zawiadomienie o wyjątku, gdy x1 = x2.

+2

Użyj atan2 i możesz tego uniknąć. –

+1

Dlaczego miałoby to zwrócić ujemny kąt? – Skizit

+1

Ponieważ atan zwraca wartość pomiędzy (-Pi/2, Pi/2). Użyj Math.atan2(). Wydaje się, że radzi sobie z problemami z użyciem Math.atan. Jeśli potrzebujesz wartości dodatniej, po prostu dodaj 2 * Pi, jeśli otrzymasz wartość ujemną. – Gedrox

20

Użyj funkcji Math.atan2. To jest jak arctan, ale wie o współrzędnych x i y, więc może obsługiwać linie, które są poziome, pionowe lub skierowane w innych kierunkach - zakres arctana -pi/2 do pi/2 nie daje poprawnej odpowiedzi dla niektórych linii .

15

Funkcja atan2 pomaga rozwiązać ten problem, unikając warunków brzegowych, takich jak dzielenie przez zero.

Math.atan2(y2-y1, x2-x1) 
Powiązane problemy