#algorytmy #programista15k #programowanie #cpp #grafika #grafika3d Czołem Mireczki, mam taki problem z optymalizacją, po optymalizacji zamiast lepiej - jest gorzej, oto problem chodzi o uniknięcie powtarzalnosci par: 1. mam chmurę np. 1000+ punktów w 3d 2. chcę utworzyć połaczenia pomiędzy wszystkimi punktami (każdy z kazdym) - (to połaczenie to geometria 3d w kształcie cylindra) 3. muszę uniknać powtarzajacych się par punktów (aby nie tworzyc dwóch cylindrów w tym samym miejscu) <- szukam optymalnego rozwiazania
No i w momencie kiedy NIE SPRAWDZAM czy pary punktów się powtarzają np. para (punkt100 i punkt250) to to samo co para (punkt250, punkt100) to mam znaczeni dużo lepszą wydajność - mimo że zamiast jednego połączenie (cylindra 3d) mam dwa - ale tak nie moze byc bo nakladajace się dwa cylindry beda powodowac artefakty..
Natępnie żeby wykryć powtarzajce się pary wkorzystałem kontener std::map i std::pair.. ale wydajność mocno spadła :( jakieś pomysły? Niestety mamy tu for() w for() iw zaleznosci od ilosci punktów np 1000+ to robi sie wolniej, nie sprawdzalem jaki efekt da utworzenie kolejnego fora() zamist kontenerów std, poiżej fragment kodu:
@Kopytko1: Zamiast tak cudować, nie możesz zrobić sobie po prostu macierzy trójkątnej, poprzez rozpoczynanie drugiej pętli od wartości licznika pierwszej? int point2 = point1 + 1. Przecież to właśnie rozpoczynanie jej od zera daje ci duplikaty które potem ifujesz :|
1. mam chmurę np. 1000+ punktów w 3d
2. chcę utworzyć połaczenia pomiędzy wszystkimi punktami (każdy z kazdym) - (to połaczenie to geometria 3d w kształcie cylindra)
3. muszę uniknać powtarzajacych się par punktów (aby nie tworzyc dwóch cylindrów w tym samym miejscu) <- szukam optymalnego rozwiazania
No i w momencie kiedy NIE SPRAWDZAM czy pary punktów się powtarzają np. para (punkt100 i punkt250) to to samo co para (punkt250, punkt100) to mam znaczeni dużo lepszą wydajność - mimo że zamiast jednego połączenie (cylindra 3d) mam dwa - ale tak nie moze byc bo nakladajace się dwa cylindry beda powodowac artefakty..
Natępnie żeby wykryć powtarzajce się pary wkorzystałem kontener std::map i std::pair.. ale wydajność mocno spadła :(
jakieś pomysły? Niestety mamy tu for() w for() iw zaleznosci od ilosci punktów np 1000+ to robi sie wolniej, nie sprawdzalem jaki efekt da utworzenie kolejnego fora() zamist kontenerów std, poiżej fragment kodu:
https://www.codepile.net/pile/xd1LwNGA
int point2 = point1 + 1. Przecież to właśnie rozpoczynanie jej od zera daje ci duplikaty które potem ifujesz :|