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
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
Trzeba
Math.toDegrees (Math.atan ((y2-y1)/(x2- x1)))
Zawiadomienie o wyjątku, gdy x1 = x2.
Użyj atan2 i możesz tego uniknąć. –
Dlaczego miałoby to zwrócić ujemny kąt? – Skizit
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
Ten post Angle between 2 points ma przykład użycia atan().
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 .
Funkcja atan2 pomaga rozwiązać ten problem, unikając warunków brzegowych, takich jak dzielenie przez zero.
Math.atan2(y2-y1, x2-x1)
Linia sama w sobie nie ma kąta, chyba że chodzi o coś. Jaki jest twój punkt odniesienia? 0,0? –
Edytowałem moje pytanie, aby było jaśniejsze. – Skizit
@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