[PROBLEM] Część odcinka.

0

title

Tak jak na obrazku, program ma przyjąć FieldOfView (kąt alfa) oraz pozycję punktu (zakładamy, że punkt jest w polu "widzenia" "kamery"), a zwrócić ułamek, także jak na rysunku. Myślałem nad tym trochę, i nic nie mogę wymyślić.

PS: Starałem się przy rysunku, mam nadzieję, że jest czytelny.
PPS: Kąt alfa na obrazku nie jest równy 70 stopni. Podałem tę wartość jako przykładową. (Chociaż możliwe, że jest to ok. 70 stopni, nie mierzyłem.)

0

Dopóki nie podasz w którym miejscu odcinek ab ma przecinać oś x, dopóty problem będzie nie do rozwiązania z racji braku danych.

Jak już to zrobisz, no to prosty wzór matematyczny. Zakładam, że umiesz operować sinusami, cosinusami, tangensami?

2

Zauważ, że nie ma znaczenia jak daleko od 0 ustawisz pomarańczowo-zielony odcinek. Stosunek a do b będzie zatem zawsze taki sam.
Możemy więc go sobie ustawić tak, by przechodził przez punkt A.
Możemy też sobie odciąć całą dolną połówkę rysunku dla uproszczenia.

zu.png

Odcinki c i d masz dane.
Kąt β to połowa α.

Szukaną wartością jest a/2(a+c), zatem potrzebujemy a.

Mając d i β wyliczysz a+c, a z tego a.

0
Azarien napisał(a):

Zauważ, że nie ma znaczenia jak daleko od 0 ustawisz pomarańczowo-zielony odcinek. Stosunek a do b będzie zatem zawsze taki sam.
Możemy więc go sobie ustawić tak, by przechodził przez punkt A.
Możemy też sobie odciąć całą dolną połówkę rysunku dla uproszczenia.

zu.png

Odcinki c i d masz dane.
Kąt β to połowa α.

Szukaną wartością jest a/2(a+c), zatem potrzebujemy a.

Mając d i β wyliczysz a+c, a z tego a.

Naprawdę wielkie dzięki :) Teraz się zastanawiam, jak mogłem o tym nie pomyśleć... Wiedziałem od początku, że nie ma znaczenia odległość a+b od 0 na osi X, ale na twoje rozwiązanie nie wpadłem.

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