Ce face math.Asin
Funcțiile inverse pornesc de la o valoare și dau unghiul, în radiani. math.Asin(x) și math.Acos(x) primesc un x între -1 și 1 (altfel rezultatul este NaN). Asin dă un unghi între -π/2 și π/2, iar Acos între 0 și π. math.Atan(x) acceptă orice număr.
math.Atan2(y, x) dă unghiul dintre axa Ox și punctul (x, y), între -π și π. Spre deosebire de Atan(y/x), știe în ce cadran se află punctul și funcționează și când x este 0. Atenție la ordine: întâi y, apoi x.
Pentru a afișa rezultatul în grade înmulțești cu 180 / math.Pi.
Parametri
| Parametru | Descriere |
|---|---|
x |
Valoarea sinusului, cosinusului sau tangentei. |
y, x |
Pentru Atan2: coordonatele punctului (întâi y). |
Ce returnează
Un unghi în radiani, ca float64.
Exemple
Exemplul 1: Unghiuri din valori, afișate în grade
package main
import (
"fmt"
"math"
)
func grade(r float64) float64 { return r * 180 / math.Pi }
func main() {
fmt.Printf("asin(0.5) = %.4f°\n", grade(math.Asin(0.5)))
fmt.Printf("acos(0.5) = %.4f°\n", grade(math.Acos(0.5)))
fmt.Printf("atan(1) = %.4f°\n", grade(math.Atan(1)))
fmt.Println(math.Asin(2))
}
Rezultat
asin(0.5) = 30.0000°
acos(0.5) = 60.0000°
atan(1) = 45.0000°
NaN
Exemplul 2: Atan2 știe cadranul
Punctele (1, 1) și (-1, -1) au același raport y/x, deci Atan dă același unghi. Atan2 le deosebește.
package main
import (
"fmt"
"math"
)
func main() {
puncte := [][2]float64{{1, 1}, {-1, 1}, {-1, -1}, {0, 5}}
for _, p := range puncte {
x, y := p[0], p[1]
unghi := math.Atan2(y, x) * 180 / math.Pi
fmt.Printf("(%v, %v): %.1f°\n", x, y, unghi)
}
fmt.Printf("Atan(-1/-1) = %.1f°\n", math.Atan(-1.0/-1.0)*180/math.Pi)
}
Rezultat
(1, 1): 45.0°
(-1, 1): 135.0°
(-1, -1): -135.0°
(0, 5): 90.0°
Atan(-1/-1) = 45.0°
Greșeli frecvente
- Inversezi argumentele lui
Atan2: semnătura esteAtan2(y, x), nuAtan2(x, y). - Dai lui
Asin/Acoso valoare puțin peste 1, rezultată din erori de rotunjire (de exemplu 1.0000000002), și obțiiNaN. Limitează valoarea la [-1, 1] înainte.
Comenzi înrudite
math.Sin: Funcțiile trigonometrice sinus, cosinus și tangentă; unghiul se dă în radiani. Sincos le dă pe primele două deodată.math.Hypot: Calculează ipotenuza: rădăcina din p² + q², fără depășiri pentru numere foarte mari sau foarte mici.math.Sinh: Funcțiile hiperbolice sinh, cosh, tanh și inversele lor asinh, acosh, atanh.