Obsługa funkcji trygonometrycznych

0

Cześć
1)
Piszę prosty program w Javie i chciałbym wykorzystać do niego funkcje tryg. Tangens tylko w sumie. W internecie nie mogłem znaleźć jakiegoś poradnika konkretnego. Mógłby mi ktoś wytłumaczyć na przykładzie jak to ma wyglądać, żebym przy podaniu przyprostokątnych 13 i 35 dostał miarę kąta alfa?

Jak zmienna "Warunek" Wyjdzie mniejsza od 60, to wybija po prostu ile wynosi tangens, ale olewa ten System.println gdzie miało wyskoczyć, że nie spełnia. Co źle zrobiłem? Źle warunki if wstawiłem?

Póki co próbowałem tak

import java.text.DecimalFormat;
import java.util.Scanner;
public class schody 
{

	public static void main(String[] args) 
	{
	@SuppressWarnings("resource")
	Scanner input = new Scanner(System.in);
		
			System.out.println("Podaj wysokośc stopnia");
			double wysokość = input.nextDouble();
	System.out.println("Podaj długość stopnia");	
	double długość = input.nextDouble();
	
	double warunek = ((2*wysokość)+długość);

				if (warunek>=60)
				if (warunek<=65)
				
				{
					System.out.println("Stopień spełnia warunek dobrych schodów");
				}
				
					else
					{
						System.out.println("Stopień nie spełnia warunku dobrych schodów");
					}
	
//					double tangens = (wysokość/długość);
//					System.out.println("Tangens kąta alfa wynosi około "+Math.tan(tangens));
					double tangens = (wysokość/długość);
					DecimalFormat df = new DecimalFormat("###.##");	
					System.out.println("Tangens kąta alfa wynosi około "+df.format(tangens));
	}
	

}

@Edit

Sam ogarnąłem z tymi warunkami. Wystarczyło zmienić na

	if (warunek>=60 && warunek<=65) 

Może komuś się przyda

1

Jak już masz tangensa to wrzucasz go do

 Math.toDegrees(Math.atan(twójTangens)) 

i dostaniesz wynik w stopniach.

0

Ale to jak zrobiłem

 
double tangens = (wysokość/długość);

To też zadziała?

0

A nie umiesz sobie znaleźć przykładowego trójkąta z długościami boków, policzyć tego tangensa, wpisać do tego co Ci podałem i zobaczyć co wyjdzie?

0

No wbiłem

double tangens = (wysokość/długość);
Math.toDegrees(Math.atan(tangens)); 
System.out.println("Tangens kąta alfa wynosi około "+Math.tan(tangens));

I dalej wyskakuje wynik dzielenia. Dlatego pytam

2

Może niejasno napisałem, jak pisałem 'wrzucasz do tego' miałem na myśli, że wypiszesz to wszystko, coś w stylu:

double tangens = (wysokość/długość);
System.out.println("Tangens kąta alfa wynosi około "+Math.toDegrees(Math.atan(tangens))); 

Edit:
W moim printl wypisuję ile wynosi kąt w stopniach.

0

Ekstra, działa, dzięki. Tylko teraz mam wynik na przykład 22.5610323723131
Fajnie by było, gdyby zaokrąglał do jedności. A gdyby jeszcze stawiał ten magiczny znaczek do stopni, to byłbym już na maksa szczęśliwy.

Nauczyłem się używać

DecimalFormat df = new DecimalFormat("###.##");	

Ale nie wiem jak to podpiąć pod ten Math.toDegrees(tangens)

0

Masz obiekt df on posiada funkcję format która przyjmuje argument typu double czyli to co masz w System.out.println();
Wystarczy wypisać tak:

System.out.println(df.format(Math.toDegrees(Math.atan(tangens))));
0

Poza tym albo ja jestem głupi, albo coś tu nie działa.

Dla 16 i 22 wyskakuje mi 41.669657827696234

16/22= 0.72727272727
a to wg tablic jest jakieś 36 stopni .-.

Spora różnica, nie żeby coś

0

Dzięki wielkie, udało się działa wszystko jak należy

Na koniec wygląda to tak, jeśli ktoś by potrzebował


import java.text.DecimalFormat;
import java.util.Scanner;
public class schody 
{

	public static void main(String[] args) 
	{
	@SuppressWarnings("resource")
	Scanner input = new Scanner(System.in);
		
			System.out.println("Podaj wysokośc stopnia");
			double wysokość = input.nextDouble();
	System.out.println("Podaj długość stopnia");	
	double długość = input.nextDouble();
	
	double warunek = ((2*wysokość)+długość);

				if (warunek>=60 && warunek<=65)
				
				{
					System.out.println("Stopień spełnia warunek dobrych schodów");
				}
				
				else
					{
						System.out.println("Stopień nie spełnia warunku dobrych schodów");
					}
	
				double tangens = (wysokość/długość);	
				DecimalFormat df = new DecimalFormat("###");	
				System.out.println("Kąt nachylenia stopnia wynosi "+df.format(Math.toDegrees(Math.atan(tangens)))+"°");
				
	}
	

}

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