www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 7da3ce4a9e6027dff2d8d9aec163354e4eb19cc2
parent 6d12f7f78434d3d608f298d268f85c53fba0858c
Author: Yoann <yoann.b87@voila.fr>
Date:   Sun,  2 Oct 2011 15:34:56 +0200

Merge branch 'master' of https://github.com/jsmaniac/2011-m2s3-city-builder

Diffstat:
Mdisplay.c | 4++--
Mroam.c | 45++++++++-------------------------------------
2 files changed, 10 insertions(+), 39 deletions(-)

diff --git a/display.c b/display.c @@ -181,12 +181,12 @@ int main() { // Pour afficher le terrain : /* int x; */ /* int y; */ - /* #define SIZE 256 */ + /* #define SIZE 1024 */ /* printf("P5 %d %d 255\n", SIZE, SIZE); */ /* for (y = 0; y < SIZE; y++) { */ /* for (x = 0; x < SIZE; x++) { */ /* //int bit = y / (SIZE/32); */ - /* //int h = hash2(t,hash2(x, y)); */ + /* //int h = hash2(x, 300+y); */ /* //if (y % (SIZE/32) == 0) h = 0; */ /* //printf("%c", ((h >> (31-bit)) & 1) * 255); */ /* //printf("%c", interpolation(256+x, 256+y, 256, 256, 512, 512, 0, 255, 255, 255)); */ diff --git a/roam.c b/roam.c @@ -41,23 +41,17 @@ int getFirstTriangleSize(Triangle* t) { return sqrt(((t->vRight->x - t->vLeft->x)^2) + ((t->vRight->y - t->vLeft->y)^2)); } -// TODO : à supprimer. -unsigned int getValueForSeed(unsigned int seed) { - unsigned int primeA = 65521; // Plus grand premier < 2^16 - unsigned int primeB = 4294967291U; // Plus grand premier < 2^32 - return ((seed * primeA) ^ ((seed+1) * primeB)) + seed; // + seed pour éviter d'avoir uniquement des nombres impairs. -} - // Ce hash donne des bons résultats sur tous les bits de l'entier // généré (pas d'artefacts, répartition homogène des 0 et des 1). unsigned int hash2(unsigned int a, unsigned int b) { unsigned int h = 1; int i; for (i = 0; i < 32; i+=8) { - a *= h; - b *= h; - h = h * 65599 + ((a >> i) & 0xff); - h = h * 65599 + ((b >> i) & 0xff); + a = a*h + 1; + b = b*h + 1; + // marche aussi avec 65521. + h = (h << 6) + (h << 16) - h + ((a >> i) & 0xff); // h * 65599 + ieme octet de a + h = (h << 6) + (h << 16) - h + ((b >> i) & 0xff); // h * 65599 + ieme octet de b } return h; } @@ -83,29 +77,6 @@ int interpolation(int x, int y, int x1, int y1, int x2, int y2, int ne, int se, return ret / ((x2-x1) * (y2-y1)); } -short** PerlinNoise(Triangle* t) { - short **values; - int triangleSize = getFirstTriangleSize(t); - int i; - int seed; - int x,y; - - seed = (int)(t->vApex->x / triangleSize + t->vApex->y / triangleSize)*1111; - - values = (short**) malloc(sizeof(short*)*triangleSize); - for(i=0; i<triangleSize;i++) - values[i] = (short*) malloc(sizeof(short)*triangleSize); - - for(i=0; i<8;i++) { - x = getValueForSeed(seed); - y = getValueForSeed(x); - values[x][y] = 255; - } - - // TODO Yoann : tout le reste. - return values; -} - // renvoie un z entre 0 et 255 int get_z(int x, int y) { x = x; /* Unused */ @@ -341,9 +312,9 @@ Triangle* initDefaultExample() { Vertex* vLeft = (Vertex*)malloc(sizeof(Vertex)); Vertex* vRight = (Vertex*)malloc(sizeof(Vertex)); - vApex->x = 1024; vApex->y = 1024; vApex->z = 0; - vLeft->x = 0; vLeft->y = 0; vLeft->z = 0; - vRight->x = 2048; vRight->y = 0; vRight->z = 0; + vApex->x = 1024; vApex->y = 1024; vApex->z = get_z(1024,1024); + vLeft->x = 0; vLeft->y = 0; vLeft->z = get_z(0,0); + vRight->x = 2048; vRight->y = 0; vRight->z = get_z(2048,0); t->vApex = vApex; t->vLeft = vLeft;