Changeset 3200 in orxonox.OLD for orxonox/trunk
- Timestamp:
- Dec 17, 2004, 11:36:49 AM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
orxonox/trunk/src/world.cc
r3199 r3200 190 190 glColor3f(1.0,0,0); 191 191 glBegin(GL_QUADS); 192 float height [500][100]; 193 Vector normal_vectors[500][100]; 194 float size = 2; 195 196 197 for ( int i = 0; i<400; i+=1) 198 { 199 for (int j = 0; j<100;j+=1) 200 { 201 //height[i][j] = rand()/20046 + (j-25)*(j-25)/30; 192 193 int sizeX = 100; 194 int sizeY = 80; 195 float length = 1000; 196 float width = 200; 197 float widthX = float (length /sizeX); 198 float widthY = float (width /sizeY); 199 200 float height [sizeX][sizeY]; 201 Vector normal_vectors[sizeX][sizeY]; 202 203 204 for ( int i = 0; i<sizeX-1; i+=1) 205 for (int j = 0; j<sizeY-1;j+=1) 206 //height[i][j] = rand()/20046 + (j-25)*(j-25)/30; 202 207 #ifdef __WIN32__ 203 height[i][j]=(sin((float)j/3)*rand()*i/182400)*.2;208 height[i][j]=(sin((float)j/3)*rand()*i/182400)*.5; 204 209 #else 205 height[i][j]=(sin((float)j/3)*rand()*(long)i/6282450500.0)*.2;210 height[i][j]=(sin((float)j/3)*rand()*(long)i/6282450500.0)*.5; 206 211 #endif 207 } 208 } 212 209 213 //Die Hügel ein wenig glätten 210 214 for (int h=1; h<2;h++) 211 for (int i=1;i< 399;i+=1 )212 for(int j=1;j< 99;j+=1)215 for (int i=1;i<sizeX-2 ;i+=1 ) 216 for(int j=1;j<sizeY-2;j+=1) 213 217 height[i][j]=(height[i+1][j]+height[i][j+1]+height[i-1][j]+height[i][j-1])/4; 214 218 215 219 //Berechnung von normalen Vektoren 216 217 for(int i=1;i<399;i+=1){ 218 for(int j=1;j<99 ;j+=1) 219 220 221 for(int i=1;i<sizeX-2;i+=1) 222 for(int j=1;j<sizeY-2 ;j+=1) 220 223 { 221 Vector * v1 = new Vector (size*i,size*(j-25)-50,height[i][j]-20);222 Vector * v2 = new Vector (size*(i+1),size*(j-25)-50,height[i+1][j]-20);223 Vector * v3 = new Vector (size*(i),size*(j-24)-50,height[i][j+1]-20);224 Vector * v4 = new Vector (size*(i-1),size*(j-25)-50,height[i-1][j]-20);225 Vector * v5 = new Vector (size*(i),size*(j-26)-50,height[i][j-1]-20);224 Vector v1 = Vector (widthX*(1), widthY*(j) , height[i][j]); 225 Vector v2 = Vector (widthX*(i-1), widthY*(j) , height[i-1][j]); 226 Vector v3 = Vector (widthX*(i), widthY*(j+1), height[i][j+1]); 227 Vector v4 = Vector (widthX*(i+1), widthY*(j), height[i+1][j]); 228 Vector v5 = Vector (widthX*(i), widthY*(j-1), height[i][j-1]); 226 229 227 Vector c1 = *v1 - *v2; 228 Vector c2 = *v1 - *v3; 229 Vector c3= *v1 - *v4; 230 Vector c4 = *v1 - *v5; 231 normal_vectors[i][j]=c1.cross(*v1-*v3)+c2.cross(*v1-*v4)+c3.cross(*v1-*v5)+c4.cross(*v1-*v2); 230 Vector c1 = v2 - v1; 231 Vector c2 = v3 - v1; 232 Vector c3= v4 - v1; 233 Vector c4 = v5 - v1; 234 Vector zero = Vector (0,0,0); 235 normal_vectors[i][j]=c1.cross(v4-v2)+c2.cross(v1-v3)+c3.cross(v2-v4)+c4.cross(v3-v1); 232 236 normal_vectors[i][j].normalize(); 233 234 235 236 237 } 238 } 237 } 238 239 239 int snowheight=3; 240 for ( int i = 0; i<400; i+=1) 241 { 242 for (int j = 0; j<100;j+=1) 243 { 244 Vector* v1 = new Vector (size*i, size*(j-25)-50, height[i][j]-20 ); 245 Vector* v2 = new Vector (size*(i+1), size*(j-25)-50, height[i+1][j]-20); 246 Vector* v3 = new Vector (size*(i+1), size*(j-24)-50, height[i+1][j+1]-20); 247 Vector* v4 = new Vector (size*(i), size*(j-24)-50, height[i][j+1]-20); 248 float a[3]; 249 if(height[i][j]<snowheight){ 250 a[0]=0; 251 a[1]=1.0-height[i][j]/10-.3; 252 a[2]=0; 253 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 254 } 255 else{ 240 for ( int i = 0; i<sizeX; i+=1) 241 for (int j = 0; j<sizeY;j+=1) 242 { 243 Vector v1 = Vector (widthX*(i), widthY*(j) -width/2, height[i][j]-20 ); 244 Vector v2 = Vector (widthX*(i+1), widthY*(j) -width/2, height[i+1][j]-20); 245 Vector v3 = Vector (widthX*(i+1), widthY*(j+1)-width/2, height[i+1][j+1]-20); 246 Vector v4 = Vector (widthX*(i), widthY*(j+1)-width/2, height[i][j+1]-20); 247 float a[3]; 248 if(height[i][j]<snowheight){ 249 a[0]=0; 250 a[1]=1.0-height[i][j]/10-.3; 251 a[2]=0; 252 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 253 } 254 else{ 256 255 a[0]=1.0; 257 256 a[1]=1.0; … … 259 258 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 260 259 261 } 262 glNormal3f(normal_vectors[i][j].x, normal_vectors[i][j].y, normal_vectors[i][j].z); 263 glVertex3f(v1->x, v1->y, v1->z); 264 if(height[i+1][j]<snowheight){ 265 a[0]=0; 266 a[1] =1.0-height[i+1][j]/10-.3; 267 a[2]=0; 268 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 269 } 270 else{ 271 a[0]=1.0; 272 a[1]=1.0; 273 a[2]=1.0; 274 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 275 276 } 277 glNormal3f(normal_vectors[i+1][j].x, normal_vectors[i+1][j].y, normal_vectors[i+1][j].z); 278 glVertex3f(v2->x, v2->y, v2->z); 279 if(height[i+1][j+1]<snowheight){ 280 a[0]=0; 281 a[1] =1.0-height[i+1][j+1]/10-.3; 282 a[2]=0; 283 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 284 } 285 else{ 286 a[0]=1.0; 287 a[1]=1.0; 288 a[2]=1.0; 289 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 290 291 292 } 293 glNormal3f(normal_vectors[i+1][j+1].x, normal_vectors[i+1][j+1].y, normal_vectors[i+1][j+1].z); 294 glVertex3f(v3->x, v3->y, v3->z); 295 if(height[i][j+1]<snowheight){ 296 a[0]=0; 297 a[1] =1.0-height[i+1][j+1]/10-.3; 298 a[2]=0; 299 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 300 } 301 else{ 302 a[0]=1.0; 303 a[1]=1.0; 304 a[2]=1.0; 305 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 306 } 307 glNormal3f(normal_vectors[i][j+1].x, normal_vectors[i][j+1].y, normal_vectors[i][j+1].z); 308 glVertex3f(v4->x, v4->y, v4->z); 309 310 } 311 } 260 } 261 glNormal3f(normal_vectors[i][j].x, normal_vectors[i][j].y, normal_vectors[i][j].z); 262 glVertex3f(v1.x, v1.y, v1.z); 263 if(height[i+1][j]<snowheight){ 264 a[0]=0; 265 a[1] =1.0-height[i+1][j]/10-.3; 266 a[2]=0; 267 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 268 } 269 else{ 270 a[0]=1.0; 271 a[1]=1.0; 272 a[2]=1.0; 273 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 274 275 } 276 glNormal3f(normal_vectors[i+1][j].x, normal_vectors[i+1][j].y, normal_vectors[i+1][j].z); 277 glVertex3f(v2.x, v2.y, v2.z); 278 if(height[i+1][j+1]<snowheight){ 279 a[0]=0; 280 a[1] =1.0-height[i+1][j+1]/10-.3; 281 a[2]=0; 282 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 283 } 284 else{ 285 a[0]=1.0; 286 a[1]=1.0; 287 a[2]=1.0; 288 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 289 290 291 } 292 glNormal3f(normal_vectors[i+1][j+1].x, normal_vectors[i+1][j+1].y, normal_vectors[i+1][j+1].z); 293 glVertex3f(v3.x, v3.y, v3.z); 294 if(height[i][j+1]<snowheight){ 295 a[0]=0; 296 a[1] =1.0-height[i+1][j+1]/10-.3; 297 a[2]=0; 298 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 299 } 300 else{ 301 a[0]=1.0; 302 a[1]=1.0; 303 a[2]=1.0; 304 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 305 } 306 glNormal3f(normal_vectors[i][j+1].x, normal_vectors[i][j+1].y, normal_vectors[i][j+1].z); 307 glVertex3f(v4.x, v4.y, v4.z); 308 309 } 312 310 glEnd(); 313 311 /*
Note: See TracChangeset
for help on using the changeset viewer.