source: trunk/packages/vizservers/nanovis/BucketSort.cpp @ 1018

Last change on this file since 1018 was 953, checked in by gah, 16 years ago

remove warnings from compile

File size: 865 bytes
Line 
1#include "BucketSort.h"
2
3using namespace PCA;
4
5void
6BucketSort::init()
7{
8    _count = 0;
9    memset(_buffer, 0, sizeof(ClusterList*) * _size);
10}
11
12void
13BucketSort::sort(ClusterAccel* clusterAccel, const Mat4x4& cameraMat, int level)
14{
15    if (clusterAccel == 0) {
16        return;
17    }
18    Cluster* cluster = clusterAccel->startPointerCluster[level - 1];
19    Cluster* c = &(cluster[0]);
20    Cluster* end = &(cluster[clusterAccel->numOfClusters[level - 1] - 1]);
21
22    Vector3 pos;
23    for (; c <= end; c = (Cluster*) ((int) c + sizeof(Cluster))) {
24        pos.transform(c->centroid, cameraMat);
25        addBucket(c, pos.length()*_invMaxLength);
26    }
27}       
28
29void
30BucketSort::addBucket(Cluster* cluster, float ratio)
31{
32    int index = (int) (ratio * _size);
33    ClusterList* c = &(_memChunck[_count++]);
34    c->data = cluster;
35    c->next =_buffer[index];
36    _buffer[index] = c;
37}
38
Note: See TracBrowser for help on using the repository browser.