Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro, C++] kąt między dwoma obiektami

Ostatnio zmodyfikowano 2010-06-06 21:20
Autor Wiadomość
ison
Temat założony przez niniejszego użytkownika
» 2010-06-01 21:43:42
mam pytanie
w tym pana kodzie:
C/C++
value = getRadians( A.pos() - B.pos() );
co oznacza A.pos()-B.pos()? przecież pos nie zwraca liczby tylko strukturę lub klasę składającą się z pozycji x i y
P-17443
DejaVu
» 2010-06-01 21:47:05
A.pos()-B.pos() zwraca różnicę. Operatory można przeciążać i tak zamiast pisać:
C/C++
value = getRadians( A.pos().x - B.pos().x, A.pos().y - B.pos().y );
mam to co wyżej już napisałem. W pierwszym przypadku, który przedstawiłem:
1) Kod jest czytelniejszy
2) Kod jest krótszy
3) Trudno o zrobienie błędu
4) Łatwo znaleźć ewentualne błędy - bo są ewidentne
P-17444
ison
Temat założony przez niniejszego użytkownika
» 2010-06-01 22:29:06
Mógłby pan napisać tu tę funkcję? Przeszukałem wszystkie wyniki w google, siedziałem 2 godziny, 30 różnych rozwiązań żadne nie działało...
P-17448
DejaVu
» 2010-06-01 23:05:22
Nie dam ;p powalcz troszkę ;) nie z googlami, tylko z matematyką. Wiesz, że trzeba wykorzystać funkcję atan i użyć kilku if'ów.
P-17458
ison
Temat założony przez niniejszego użytkownika
» 2010-06-01 23:31:51
nieee, już mam dość tego całego debugowania

czyżby to była ta cała magiczna funkcja? ;)
C/C++
double angle( point p1 )
{
    return atan2( p1.y, p1.x );
}
nie działa tak jak powinno ale zapytam bo może gdzieś indziej zrobiłem błąd

to że trzeba użyć funkcji atan nic mi szczególnego nie mówi...
w twierdzeniu tangensów występują dwa kąty więc odpada
jedyne co mi zostaje to albo wyliczyć kąt z twierdzenia cosinusów co jest niezwykle masakryczne i dłuuugie, albo wyszukać gdzieś prostsze rozwiązanie które działa w magiczny sposób :)
niestety zbyt dużej wiedzy apropo trygonometrii ze szkoły nie posiadam gdyż jeszcze tego nie przerabialiśmy na tym poziomie. Jedyne co to stosunki boków, tyle że one odpadają bo to nie trójkąt prostokątny.
P-17462
DejaVu
» 2010-06-01 23:50:13
Nie oczekuj, że kiedykolwiek coś w szkole przerobisz na poziomie, który będzie satysfakcjonujący dla programisty. Szkoła to przedszkole (studia w sumie też, ale to szczegół).

/edit:
@up: nie znam funkcji atan2, więc się nie wypowiadam.
P-17463
ison
Temat założony przez niniejszego użytkownika
» 2010-06-02 07:16:17
aktualnie chodzę do szkoły o profilu mat-inf i w gimnazjum przerabiamy materiał z liceum. Mam nadzieje że chociaż troche wiedza ze szkoly mi sie przyda. W takim razie będę chyba to musiał robić z obliczania długości wszystkich boków i twierdzenia cos. W każdym razie dzięki za pomoc
P-17467
DejaVu
» 2010-06-02 11:39:07
http://pl.wikipedia.org/wiki/Funkcje_trygonometryczne, sekcja definicja za pomocą kąta skierowanego. Przekształć wzór w którym masz tangensa tak, aby mieć kąt alfa. Wykorzystaj do tego funkcję odwrotną, tj arcus tangens'a. Jeśli nie za bardzo wiesz jak to zrobić - poproś nauczyciela. Nauczyciel Ci poda banalny wzór, jednak będziesz musiał go później obudować o if'y (ze względu na dziedzinę arcustangens'a).
P-17468
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona