Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyliczanie kąta z podanych wymiarów a i b
tiraeth
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Witam.. mam problem. Chciałem pobawić się z gd2 i wymyśliłem sobie wyrysowanie wykresu funkcji liniowej, tylko teraz mam problem :/

Jak wyliczyć kąt pod którym będzie padać linia mając podane szerokość a i wysokość b

Przykład
Kod
    ^
  4-|      /
    |     /
  3-|    /
    |   /
  2-|  /
    | /
  1-|/
--------------------->
      | | | | | | | |
      1 2 3 4 5 6 7 8

W tym wypadku linia pada pod kątem 45 stopni (umownie bo przechodzi przez punkt (1,1)

a = 1
b = 1


Tylko nie wiem jak to obliczyć smile.gif Pomocy exclamation.gif biggrin.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
lolek09
post
Post #2





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 30.05.2003
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Nie znam gd2, ale czy nie ma tam funkcji, która rysuje prostą przechodzącą przez 2 podane punkty obrazu? Byłoby to dużo łatwiejsze, wystarczy wyliczyć dwie wartości i puścić prostą przez te 2 punkty.

Jeśli niema czegoś takiego, to zostaje tylko trygonometria sad.gif Nie wiem, czy php implementuje jakieś funkcjie trygonometryczne, ale jeśli nie, to będziesz musiał po prostu przepisać tablice trygonometryczne.


--------------------
Chciałbyś zobaczyć program bez błędów? Wyobraź sobie UFO, w którym Elvis doi swojego jednorożca
Go to the top of the page
+Quote Post
bela
post
Post #3


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

Ostrzeżenie: (0%)
-----


Cytat(lolek09 @ 2005-03-26 18:22:35)
Jeśli niema czegoś takiego, to zostaje tylko trygonometria sad.gif Nie wiem, czy php implementuje jakieś funkcjie trygonometryczne, ale jeśli nie, to będziesz musiał po prostu przepisać tablice trygonometryczne.

Jasne, że są, wystarczy zobaczyć do manuala biggrin.gif
math" title="Zobacz w manualu PHP" target="_manual


--------------------
Go to the top of the page
+Quote Post
CyklOP
post
Post #4





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 16.08.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


php ma wszystkie istotniejsze funkcje - zarówno trygonometryczne jak i logarytmy, potęgi itp. więc nie ma problemu smile.gif

a jak kąt policzyć? smile.gif Normalne funkcje trygonometryczne smile.gif
czyli jak masz prostą y = ax + b, to a = tg alfa (czyli tangens konta nachylenia).
arcus tangens (a) = kąt nachylenia (alfa). Funkcje musisz sobie sam znaleźć w dokumentacji. Jeśli nie o to chodziło, to sorry ;]

Edit: spóźniłem się ;] ale druga część posta może się przyda.

Ten post edytował CyklOP 26.03.2005, 18:37:30


--------------------
This page is 100% valid MSHTML. We guarantee it will only view in MSIE.
Na warsztacie: replays.pl
Go to the top of the page
+Quote Post
tiraeth
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


mam coś takiego:

  1. <?
  2. <?php
  3. $x = 3;
  4. $y = 1;
  5.  
  6. $r = sqrt($y*$y+$x*$x);
  7.  
  8. $cos = cos($x/$r);
  9.  
  10. echo $cos;
  11. ?>

i to wyświetla mi cosinus tego trójkąta (umownego) smile.gif ale teraz nie wiem jaka funkcja albo wzór matematyczny zamieni cos na kąt smile.gif
Go to the top of the page
+Quote Post
Ociu
post
Post #6





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




hm...
Władować wszystkie kąty wraz z wartościami do tablicy ? smile.gif
Go to the top of the page
+Quote Post
tiraeth
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


dalej.. mam teraz funkcję arcos cosinusa smile.gif i teraz zwraca mi w radianach i teraz jak wywalam rad2deg() to zwraca mi 56... stopni a w tablicy mam między 18 a 19...

  1. <?php
  2. $x = 3;
  3. $y = 1;
  4.  
  5. $r = sqrt($y*$y+$x*$x);
  6.  
  7. $cos = cos($x/$r);
  8. $rad = acos($cos);
  9. $alfa = rad2deg($rad);
  10.  
  11. echo $alfa;
  12. ?>
Go to the top of the page
+Quote Post
CyklOP
post
Post #8





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 16.08.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


A w radianach dobrą wartość podaje?

Ten post edytował CyklOP 26.03.2005, 18:54:01


--------------------
This page is 100% valid MSHTML. We guarantee it will only view in MSIE.
Na warsztacie: replays.pl
Go to the top of the page
+Quote Post
tiraeth
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Właśnie, że mam problem ze zrozumieniem... kończę dopiero gimnazjum smile.gif

wyniki:

radian: 0.948683298051
cosinus: 0.582753610702

według tablic matematycznych kąt alfa powinien wynosić 18-19 stopni, a wykorzystując funkcję rad2deg zwraca mi 56 z kawałkiem... nie rozumiem.

Odrazu zaznaczam, że taki sam wynik zwraca mi w EXCEL'u: 54,35554907 bo sprawdzałem.

Ten post edytował Tiraeth 26.03.2005, 18:59:12
Go to the top of the page
+Quote Post
CyklOP
post
Post #10





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 16.08.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Wszystko jasne.
Poprawny kod:

  1. <?php
  2. $x = 3;
  3. $y = 1;
  4.  
  5. $r = sqrt($y*$y+$x*$x);
  6.  
  7. $cos = $x/$r;
  8. $rad = acos($cos);
  9. $alfa = rad2deg($rad);
  10.  
  11. echo $alfa;
  12. ?>


$cos = $x/$r;
zamiast $cos = cos($x/$r); !
po prostu x / r = cos alfa, z definicji. Nie nalezy tego "cosinusować" jeszcze smile.gif


--------------------
This page is 100% valid MSHTML. We guarantee it will only view in MSIE.
Na warsztacie: replays.pl
Go to the top of the page
+Quote Post
Jabol
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


popatrz na to:
jak obliczyć kąt przecięcia dwóch prostych (dla funkcji zapisaychj: y=m1*x+n1 oraz y=m2*x+n2):
tan ALFA =| (m2 - m1)/(1+m1*m2) |
dla Ciebie m1 = 0, więc
tan ALFA =| m2/1 |
tan ALFA =|m2| (ew. tan ALFA = |m1|, zależy jak przekształcasz) // czyli dokładnie to, co napisał CyklOP
czyli idąc dalej:
tan-1 m2 = ALFA

  1. <?php
  2. $a=XXX;//wysokość
  3. $b=XXX;//szerokość (różna od 0!!!)
  4. $m=$a/$b;
  5. $alfarad=atan($m);
  6. $alfadec=rad2dec($alfarad);//wynik!!!
  7. if($alfadec>(float)90) $alfadec=(float)180-$alfadec;
  8. ?>


Ten post edytował Jabol 26.03.2005, 19:07:55
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 19:22