[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [PROGRAMMERING] marching cube på 3D net af blandede kantlængder



Marc Cromme wrote:
marching cube går ud fra at alle kubus'er har samme størrelse.
Men jeg ønsker at operere på et 3D kubisk net, hvor kuberne har
forskellige størrelser, med kantlængder der er en faktor 2^n af hinanden.

Rationalet er at det er dyrt at lave en meget fin subdivision, så det
ønsker jeg kun at lave der hvor det er nødvendigt.

Men så kommer man ind i problemet at en kubus med kantlængde 2 er nabor
til to kuber med kantlængde 1 - og der kan nemt gå ged i de trekanter
der mødees der (cracs).

Jeg tror aldrig jeg har hørt om nogen metode til at gøre det du vil, på en fornuftig måde, og jeg tror ærligt talt heller ikke man rigtigt kan.


Den problematiske side fra den store kubus har to grænsepunkter, og den skal grænse op imod to sider, der bliver genereret ud fra tre grænsepunkter, hvoraf de to yderpunkter er de samme som den store sides grænsepunkter. For at undgå cracks skal man altså sikre at de tredie grænsepunkt ligger præcis på det punkt hvor siden fra den store kubus bryder kanten mellem de to små kuber.

Den eneste måde jeg kan se det kan lade sig gøre, er at subdividere det tredie punkt voldsomt meget og så har du jo ikke rigtigt sparet noget.

Jeg er ikke verdensmester i den her slags (hverken programmeringen eller matematikken) men jeg tror, at hvis du vil optimere på algoritmen så skal du i stedet kigge på at cache brydningspunkterne.

Hvis alle kuberne er lige store, så vil hver side blive delt mellem fire kuber. Det betyder også at den bliver undersøgt for brydninger (intersections) fire gange. Hvis du finder en måde at cache brydningerne, så vil du kunne spare ca. 75% af alle subdivisioner. Det tror jeg giver et bedre resultat.

Hilsen Anders

 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 22:44 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *