Ik ben bezig met een 3d engine in flash; nu gaat het positioneren goed, objecten krijgen een x,y,z waarde en aan de hand hiervan word de positie op het scherm bepaald. Nu is het probleem echter dat de sortering nog niet helemaal lekker loop; na een zoektoch op het net (zonder echt resultaat) bedacht ik zelf de volgende functie ... in het kort loopt hij alle objecten bijlangs, kijkt naar hun afstand tot het "oog" en zet deze in een array. De volgorde van de array word als volgt bepaald: de eerste waarde word in een nieuwe array gezet, vervolgens word gekeken voor elke waarde vergeleken met de waarde uit de array om zo de juiste volgeorde te bepalen, op deze manier komt 't object met de kleinste afstand waarde als eerste, en de hoogste als laatst. Zo kan ik vervolgens de nieuwe "volgorde" array doorlopen en nieuwe levels toekennen aan de objecten ... helaas wertk dit niet helemaal fijn.
Overigens ben ik benieuwd dus waarom het niet werkt, maar ook of deze methode aan te raden is qua snelheid ed. Ik heb artikelen gevonden waarin verschillende methodes werden uitgelicht, zoals Quick Sort, the Bubble Sort, Selection Sort, the Merge Sort, the Heap Sort, the Binary Sort, en the Radix Sort. Nu is mijn vraag welke het beste is voor een 3d engine, of dat ik gewoon door kan gaan met mijn eigen?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| function zSorteren () {
volgorde = new Array ();
for (i=1;i<diepteObject;i++) {
var pushed = false;
if (i==1) {
volgorde.push(i);
}
else {
var lengte = volgorde.length;
for (j=0;j<lengte;j++) {
if ((this["object" + i].afstand < this["object" + volgorde[j]].afstand)
&& (Number(pushed) == 0) && (j < lengte)) {
volgorde.splice(j-1, 0, i);
pushed = true;
}
else if (Number(pushed) == 0) {
volgorde.push (i);
pushed = true;
}
}
}
}
for (i=0;i<volgorde.length;i++) {
this["object" + volgorde[i]].swapDepths (i + 1);
trace (this["object" + volgorde[i]].getDepth());
}
} |
Overigens ben ik benieuwd dus waarom het niet werkt, maar ook of deze methode aan te raden is qua snelheid ed. Ik heb artikelen gevonden waarin verschillende methodes werden uitgelicht, zoals Quick Sort, the Bubble Sort, Selection Sort, the Merge Sort, the Heap Sort, the Binary Sort, en the Radix Sort. Nu is mijn vraag welke het beste is voor een 3d engine, of dat ik gewoon door kan gaan met mijn eigen?