Funkcje Trygonometryczne

Odpowiedz Nowy wątek
2018-01-11 18:54
0

Witam
Piszę program obliczający wysokość trójkąta prostokątnego.
Mam do dyspozycji podstawę a = 16
I zmienny kąt alpha.

Przykładowo dla kąta float 45.0f;

float       a                   =   Mathf.Sqrt( Mathf.Pow( B.x - A.x, 2 ) + Mathf.Pow( B.y - A.y, 2 ) );
Debug.Log( "Długość boku a wynosi: " + a );

float       sinus               =   Mathf.Sin( alpha_angle );
float       cosinus             =   Mathf.Cos( alpha_angle );
float       tangens             =   Mathf.Tan( alpha_angle );
Debug.Log( "Sinus kąta: " + alpha_angle + " wynosi: " + sinus );
Debug.Log( "Cosinus kąta: " + alpha_angle + " wynosi: " + cosinus );
Debug.Log( "Tangens kąta: " + alpha_angle + " wynosi: " + tangens );

float       b                   =   tangens * a;
float       bx                  =   ( a / cosinus ) * sinus;
Debug.Log( "Długość boku b wynosi: " + b );
Debug.Log( "Długość boku bx wynosi: " + bx );

wynik wychodzi:

Długość boku a wynosi: 16
Sinus kąta: 45 wynosi: 0.8509035
Cosinus kąta: 45 wynosi: 0.525322
Tangens kąta: 45 wynosi: 1.619775
Długość boku b wynosi: 25.9164
Długość boku bx wynosi: 25.9164

Długość boku powinna wyjść 16 cm tak samo jak bok a. Niestety nawet tangens nie wynosi dokładnie 1.0 po wpisaniu 45. Co zaradzić na ten problem?

Proszę Cię, nie formatuj tak, to nie assembler. Używaj spacji, nie ważne że zmienne nie będą jedna pod drugą. - atmal 2018-01-11 19:00

Pozostało 580 znaków

2018-01-11 19:06

Musisz przekonwertować stopnie na radiany.
Np. używając takiej krótkiej metody:

public static double ToRad(double angle)
{
    return (angle * Math.PI) / 180.0;
}
edytowany 1x, ostatnio: atmal, 2018-01-11 19:06
Czyli zanim wstawię 45 do Mathf.sin( ... ) muszę zrobić Mathf.sin( ToRad(45) ); ? - chkam 2018-01-11 19:24
Dokładnie - atmal 2018-01-11 19:24

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0