SFML-bounding box,precyzja
Ostatnio zmodyfikowano 2015-09-21 12:16
shadow999 Temat założony przez niniejszego użytkownika |
SFML-bounding box,precyzja » 2015-09-20 17:44:01 Witam, chciałem się dowiedzieć czy bounding boxy są faktycznie tak nieprecyzyjne. Otóż mam kwadrat 50x50(bounding box) oraz rotującą na środku ekranu linię, która przecinając pierwszy napotkany punkt kwadratu ma wyświetlić koordynaty punktu. Niestety moje oczekiwania co do precyzji były znacznie wyższe, wykrycie kolizji potrafi pomylić się nawet o 20px. Poniżej wycinek odpowiadający za kolizję.
for(int k=1999;k>0;k--){ if(a.contains(pl[k])&&a.contains(pl[k-1])==false&&pierwszy==false){ //pl to nic innego jak zbiór 2000 koordynatów punktów rotującej linii liczonych dynamicznie z funkcji trygonometrycznych-czyli poruszenie linii o 1 stopień spowoduje zmianę wszystkich koordynatów //"a" to oczywiście nasz bounding box kwadratu zapis[0]=pl[k]; //zapisujemy punkt kolizji zapis[2]=pl[1999];//nieistotne dla mojego problemu, służy do pobierania punktu widma linii w miejscu przecięcia pierwszy=true; //mamy już koordynat więc zabezpieczamy przed nadpisaniem przez inną daną }}
|
|
SocrateZ |
» 2015-09-20 20:56:53 |
|
shadow999 Temat założony przez niniejszego użytkownika |
» 2015-09-20 23:57:23 Dzięki za pomoc, faktycznie, bounding box jest dość poprawny, jednak przesunięcie wynikające z niedokładności wyliczeń 2000 sinusów na sekundę sukcesywnie powiększało niedokładność pomiaru, zastosowałem metodę przybliżeń do 50 jako, że kwadrat ma wielkość 50,50. Jeszcze pewnie kilka postów napiszę więc temat zostawię otwarty aby spamu nie robić, jeżeli ktoś ma jeszcze chęci to może mi wytłumaczyć jak rotacja wpływa na bounding box prostokątów? Pisanie silnika dynamicznego oświetlenia w samym sfml to większe wyzwanie niż sądziłem. |
|
pekfos |
» 2015-09-21 12:16:04 Jeszcze pewnie kilka postów napiszę więc temat zostawię otwarty aby spamu nie robić |
Jeśli twoje posty to spam, nie pisz nic w ogóle. Zamykam. |
|
« 1 » |