ja próby wdrożenia algorytmu opisane na tym dokumencie, używane na przechodzenie komórek siatki, aby po linii prostej, która jest użyteczna do wykrywania promieniowania:Jak zainicjować zmienne t w "Algorytmie szybkiego przekierowania Voxela dla śledzenia promieni"?
http://www.cse.yorku.ca/~amana/research/grid.pdf
Dokument opisuje algorytm w dwóch częściach : inicjalizacja i iteracyjne przejście. Potrafię wskazać część iteracyjną, ale mam problem ze zrozumieniem, jak obliczane są niektóre zmienne w części inicjalizującej.
Potrzebuję pomocy inicjalizacji tMaxX
, tMaxY
, tDeltaX
& tDeltaY
. Ich procedura inicjalizacji jest wyjaśnione następująco:
Następnie możemy określić wartość t, przy której promień przecina RST fi pionową granicę woksela i przechowywać go w zmiennej tMaxX. Dokonujemy podobnego obliczenia w y i przechowujemy wynik w tMaxY. Minimum tych dwóch wartości będzie wskazywać, ile możemy podróżować wzdłuż promienia i nadal pozostać w aktualnym wokselu.
Wreszcie obliczamy tDeltaX i tDeltaY. TDeltaX wskazuje, jak daleko wzdłuż promienia musimy się poruszać (w jednostkach t) dla poziomego składnika takiego ruchu, aby był równy szerokości woksela. Podobnie, przechowuje w tDeltaY wielkość ruchu wzdłuż promienia, który ma pionowy komponent równy wysokości woksela.
Nie jestem w stanie wydedukować kodu potrzebnego z angielskiego opisu podanego powyżej. Czy ktoś może przetłumaczyć dla mnie wyrażenie matematyczne/pseudokodowe?
Co to są x1 i x2? – subb
@subb Współrzędne punktów początkowych i końcowych – MBo
Należy zauważyć, że ta funkcja Frac() musi zwracać frakcję * dodatnią * dla liczb ujemnych w przeciwieństwie do implementacji w niektórych standardowych bibliotekach (które zwracają ułamek ujemny dla liczb ujemnych). – josch