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:
| M | display.c | | | 4 | ++-- |
| M | roam.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;