onsdag, november 14, 2007

Toptunet drejeled

Vores drejeled har nu nået 4. iteration. Men før vi kaster os ud i beskrivelsen af den vil vi lige kort nævne iteration nummer 2 og 3:

Som det kan ses var anden iteration en stor konstruktion.

Det har sine årsager, men lad os starte med at sige, at vi redegør for de første led, ikke fordi de er gode, men fordi de illustrerer hvor store fejl man kan begå når man forsøger at modellere geometrisk funktionalitet i software.

2. Iteration:
Ideen er taget fra vores kugleled, hvor der sidder constraints fra alle partikler til alle partikler, og hvor minimums-afstandene mellem de to pyramidebunde kan forøges til det tidspunkt hvor de passer med, at ledet er helt strakt ud hvis det ikke er twistet - men det kan i den konstruktion give sig en del hvis man twister partiklerne i bunden af den ene pyramide 45 grader omkring midteraksen på figuren, hvorfor modellen er mangelfuld. Ydermere kan man ikke sætte grænser for rotationsgraden, så den dur ikke rigtig; Iteration 2 baserer sig på at forøge antallet af partikler som har minimumsafstande, altså i stedet for to pyramider hvor partiklerne i bundene ikke må komme for tæt på hinanden er her to figurer som er en approximation over flade kegler. På tegningen er et antal af gule minimumsafstande angivet. Men kegler passer ikke ind i vores system med porte, så derfor er der spændt porte ovenpå og nedenunder konstruktionen, og midterpartikler er nødvendige adskillige steder for at afstive strukturen.

Alt i alt er dette led håbløst indviklet, og ignorerer geometriske regler til fordel for et viderearbejde med noget, som er tried and true.

3. Iteration :

Her har vi genvundet fatningen lidt:
Dette led består af 4 pyramider, og portene er markeret med blåt. Det bærende princip er, at vi ønsker at kunne rottere 2 figurer som er placeret oven i hinanden i forhold til hinanden:
Det at fysiske led ikke kan have overlappende dele, betyder ikke, at vi behøver arbejde med den begrænsning. Vi kan tvært imod udnytte, at vi har mere fleksibilitet til rådighed. Vi kiggede derfor lidt på det, og indså, at vi kunne placere partikler på en cirkel ved at angive afstande til to punkter. Herfra var ideen at konstruere to centralt placerede overlappende firkanter, der altså havde partikler som kun bevægede sig på cirkelbuen, og så lave constraints på dem. Det er de to kongruente figurer, en sort og en grøn, som hver har 8 kanter.
De bliver hver låst fast på en port ved hjælp af lidt constraints.

4. Iteration

Men det viste sig, at det kan optimeres yderligere:


Her har vi udnyttelse af summen af ting fra de andre led: vi spender to porte direkte på 2 partikler med faste constraints. Det giver 2 dobbelt-pyramide konstruktioner, som bedst beskrives ved, at hver port laver to pyramider, som hver møder en af den anden ports to pyramider i spidsen. De er fint defineret i forhold til hinanden, og er ubevægelige i forhold til de to faste constraints, så såfrem man gør sit arbejde ordenligt er der ikke problemer. Den grønne constraint er tegnet på for at illustrere, at justerer man på max-størrelsen af den, så kan man justere drejbarheden af den ene pyramide i forhold til den anden.

5. Iteration

Men kan det gøres endnu bedre? her må svaret være ja - det kan det. "Man behøver kun at definere 3 afstande fra 3 punkter på en rigid-body til "noget andet" for at forholdet er bestemt": Det er en regel vi nu har fået praktisk erfaring for at bruge. Så det gælder altså for hver af de 4 dobbeltpyramider, at der kan undværes en constraint op til spidsen. Men vores fysikmodel anvender verletintegration, hvilket gør at man ikke kan stole helt så meget på, at afstanden mellem partiklen og pyramidetoppene er bibeholdt i korrekt det sted hvor constrainten (som ideelt set allerede er opfyldt) er sat på. 
Men man kan imidlertid foretage flere verletintegrationer hvis man kun arbejder med 25 constraints, end hvis man arbejder med 29. 
Og precisionen øges også med antallet af iterationer - så her er der tale om en afvejning.
Under alle omstændigheder er der kun tale om en lille optimering, så den vil vi ikke dokumentere yderligere.

Ingen kommentarer: