Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
micky

Založen: 28. 02. 2008 Příspěvky: 348 Bydliště: Plzeň, Praha
|
Zaslal: 28. prosinec 2009, 17:01:11 Předmět: Kolize bodu s úsečkami |
|
|
Zdravím, píšu takový menší program... Na scéně jsou rozmístěny body, které lze různě propojit úsečkami. Průšvih nastává ve chvíli, kdy mám uživateli umožnit jejich odstranění. I přes nějaké ty optimalizace, že nejprve kontroluju rámeček vytyčený dvěma body, a pak teprve rovnici přímky, jsem stále na složitosti O(N*N/2). Při větším množství bodů na scéně výběr úsečky začne lagovat...
Napadlo mě tedy:
1/ mít jakousi bitmapu, do které by se úsečky předrenderovaly a pak už jen přečíst po kliknutí hodnotu pixelu - to mi přijde jako řešení z nouze
2/ rozsekat scénu do stromu - tady si nevím rady, s body bych si poradil, z úseček mám obavy...
Jen bych dodal, že scéna je 2D. S kolizí samotnou nemám problém, spíš bych potřeboval odkaz na nějaké poučné pojednání o kolizích s velkým množstvím úseček. Díky mockrát za případné rady a postřehy. |
|
Návrat nahoru |
|
 |
michalferko
Založen: 29. 09. 2008 Příspěvky: 83
|
Zaslal: 28. prosinec 2009, 17:07:02 Předmět: |
|
|
Na to by sa hodil quadtree alebo nejaka podobna hierarchicka struktura _________________ Moje minihry a ine projekty |
|
Návrat nahoru |
|
 |
micky

Založen: 28. 02. 2008 Příspěvky: 348 Bydliště: Plzeň, Praha
|
Zaslal: 28. prosinec 2009, 17:26:09 Předmět: |
|
|
Jak do quadtree zahrnu dvojice bodů? Stačí mi to jen nastínit
EDIT: Úsečka = dva body + to mezi nimi... tak bych to zjednodušeně viděl |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 28. prosinec 2009, 17:43:55 Předmět: |
|
|
mas to cele v 2D. a vyberas jednotlive body pomocou obdlznikovych oblasti. ved to sa da riesit v linearnom case. a usecku vyberiem akonahle je tam len jeden z koncvich bodov.
neviem co ti tam tvory tu O(N^2) zlozitost. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
micky

Založen: 28. 02. 2008 Příspěvky: 348 Bydliště: Plzeň, Praha
|
Zaslal: 28. prosinec 2009, 19:52:13 Předmět: |
|
|
nou napsal: |
neviem co ti tam tvory tu O(N^2) zlozitost. |
Ah... ano, omlouvám se, je to lineární složitost - nechal jsem se zmást sám sebou, ale i tak bych to chtěl zrychlit. Zkusím to s nějakým stromem, nevím, jestli se tomu ve 2D dá říkat octtree.
EDIT: Kdybych si přečetl trochu pozorněji ten kus kódu, co jsem psal někdy v noci, patrně bych se tady vůbec neptal. Skutečně jsem sepsal cosi, co mělo kvadratickou složitost. Octree, Quadtree, nic takového nebude nakonec potřeba, program po přepsání tří řádků kódu pracuje svižně. Ještě jednou díky "nou" za probuzení.  _________________ https://www.bluepulsar.cz/
https://twitter.com/11thDream_Game/ |
|
Návrat nahoru |
|
 |
pcmaster

Založen: 28. 07. 2007 Příspěvky: 1827
|
Zaslal: 28. prosinec 2009, 20:53:44 Předmět: |
|
|
Quadtree je len specialny pripad Octree. Podobne vztahy su celkovo medzi kD-tree, BSP-tree, Octree atd.
Keby si chcel riesit aj taku moznost, ze mas body a niektore su pospojovane useckami a user ma mat moznost oznacovat usecky a pripadne usecky aj odstranovat (s useckami aj ich konce, pripadne nie), tak mas viacero moznosti.
Nielen tieto problemy riesi vypoctova geometria. Nad useckami existuje kopec typov stromov, ktore ti poskytuju logaritmicku zlozitost dotazov, presne ako by si ocakaval. Koho to zaujima, moze skusit pohladat pojmy ako "segment trees", "interval trees", "segment windowing", ale mozem povedat, ze dana problematika je dost narocna, a preto ju mame na FEL CVUT napriklad az v poslednom (5.) rocniku a ja este skusku furt nemam. Tento problem sa vsak da pohodlne riesit aj pomocou BVH (bounding volume hierarchies).
Keby si chcel riesit aj problem vyberu useciek ci trojuholnikov a inych objektov, mozem sa tu o tom skusit trochu rozpisat. _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
 |
micky

Založen: 28. 02. 2008 Příspěvky: 348 Bydliště: Plzeň, Praha
|
Zaslal: 29. prosinec 2009, 12:51:49 Předmět: |
|
|
Možná jen tak zlehka, spíš mě odkázat na to, co mám hledat. Pro ten prográmek, co jsem vyrobil, nakonec lineární složitost bude i stačit. Je pravda, že na střední škole toho člověk o octree moc neuslyší.
Nu, mám se co učit. _________________ https://www.bluepulsar.cz/
https://twitter.com/11thDream_Game/ |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 29. prosinec 2009, 13:05:44 Předmět: |
|
|
Na VŠ o octree taky neuslyšíš, pokud si nezapíšeš předmět o optimalizaci grafiky. To jsou věci, na které ti stačí net. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
pcmaster

Založen: 28. 07. 2007 Příspěvky: 1827
|
Zaslal: 29. prosinec 2009, 13:19:46 Předmět: |
|
|
[OT]Tak neviem, my sme mali na akceleracne datove struktury v PG povinny predmet a na vypoctovu geometriu druhy povinny predmet
[ÜBER-OT]S ktorymkolvek computer engineering Bc. sa zapiste na magistersky (Ing.) program FEL CVUT elektrotechnika a informatika - vypoctova technika - pocitacova grafika, odporucam [/ÜBER-OT][/OT]
Eo ma pravdu, quadtree/octree vpoho vygooglis a naimplementujes (po spravnom pochopeni) z netu. Zacni kludne na wikipedii, tam je kopec odkazov. _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
 |
Mantharis
Založen: 28. 07. 2007 Příspěvky: 39
|
Zaslal: 29. prosinec 2009, 18:50:56 Předmět: |
|
|
[OT]
Dovolim si nesouhlasit, na skolach informatickyho zamereni by se IMHO rozhodne o zakladnich datovych strukturach pro praci ve vice rozmerech rozhodne mluvit melo v ramci nejakyho povinnyho predmetu uz v BC. studiu.
Skoro bych rekl ze spolecne s algoritmy je to ta uplne nejstezejnejsi cast informatiky...co jinyho pak na informatickych oborech v porovnani s matematickyma oborama ucit nez prave takovyhle veci???
[OT2]
(tim netvrdim ze nekde se to mozna skutecne neuci, ale pak bych na takovy skole teda studovat nechtel )
[/OT2]
[/OT] _________________ If the God gave us the source code we could bug the world. |
|
Návrat nahoru |
|
 |
Houp
Založen: 28. 07. 2007 Příspěvky: 672
|
Zaslal: 29. prosinec 2009, 20:09:42 Předmět: |
|
|
pcmaster napsal: |
[OT]
[ÜBER-OT]S ktorymkolvek computer engineering Bc. sa zapiste na magistersky (Ing.) program FEL CVUT elektrotechnika a informatika - vypoctova technika - pocitacova grafika, odporucam [/ÜBER-OT][/OT] |
[OT]Obávám se, že si zaspal dobu, pokud vím, tak tenhle studijní program se jen dobíhá, ale už se na něj nově nezapíšete. Na druhous tranu věřím, že něco podobného bude na nových oborech na Otevřené informatice[/OT] _________________
 |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 29. prosinec 2009, 20:30:40 Předmět: |
|
|
Mantharis napsal: |
[OT]
Dovolim si nesouhlasit, na skolach informatickyho zamereni by se IMHO rozhodne o zakladnich datovych strukturach pro praci ve vice rozmerech rozhodne mluvit melo v ramci nejakyho povinnyho predmetu uz v BC. studiu.
Skoro bych rekl ze spolecne s algoritmy je to ta uplne nejstezejnejsi cast informatiky...co jinyho pak na informatickych oborech v porovnani s matematickyma oborama ucit nez prave takovyhle veci???
[OT2]
(tim netvrdim ze nekde se to mozna skutecne neuci, ale pak bych na takovy skole teda studovat nechtel )
[/OT2]
[/OT] |
Není lepší raději studenty naučit jak takové datové struktury navrhovat než jim je papouškovat? Octree je jen blbej strom, na tom není zas moc co učit, to stojí za zmínku tak na pár slajdů. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
micky

Založen: 28. 02. 2008 Příspěvky: 348 Bydliště: Plzeň, Praha
|
Zaslal: 29. prosinec 2009, 20:56:11 Předmět: |
|
|
Eosie napsal: |
Octree je jen blbej strom, na tom není zas moc co učit, to stojí za zmínku tak na pár slajdů.
|
Pro mě to bude taky blbej strom, jakmile ho jednou sám použiju. Asi nebudem protahovat off-topicy, ještě jednou díky za rady. _________________ https://www.bluepulsar.cz/
https://twitter.com/11thDream_Game/ |
|
Návrat nahoru |
|
 |
Mantharis
Založen: 28. 07. 2007 Příspěvky: 39
|
Zaslal: 29. prosinec 2009, 21:49:11 Předmět: |
|
|
citace: |
Není lepší raději studenty naučit jak takové datové struktury navrhovat než jim je papouškovat? Octree je jen blbej strom, na tom není zas moc co učit, to stojí za zmínku tak na pár slajdů. |
Souhlas, ale prave ze je to vec na slide, tak mi prijde skoda takovou variantu nezminit treba prave pri probirani stromu nekde na zaver...student tim dostane do podvedomi ze neco takovyho existuje a jak se to jmenuje a kdyz to jednou bude potrebovat tak si to uz lehce dohleda.
A to ze je lepsi kdyz si to student vymysli sam...to je otazka, ono naucit studenta premejslet je urcite prinosnejsi nez do nej narvat jen natvrdo informace ale zase jen s timhle pristupem by se clovek moc daleko nedostal kdyby si vsechno vymyslel sam...takze myslim ze ten slide si to proste zaslouzi  _________________ If the God gave us the source code we could bug the world. |
|
Návrat nahoru |
|
 |
|