Changeset 3559 in orxonox.OLD for orxonox/trunk/src/world_entities
- Timestamp:
- Mar 15, 2005, 12:44:19 PM (20 years ago)
- Location:
- orxonox/trunk/src/world_entities
- Files:
-
- 1 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
orxonox/trunk/src/world_entities/skysphere.cc
r3544 r3559 71 71 this->sphereObj = gluNewQuadric(); 72 72 gluQuadricTexture(this->sphereObj, GL_TRUE); 73 this->setRadius(2 50.0);73 this->setRadius(220.0); 74 74 75 75 this->skyMaterial = new Material("Sky"); -
orxonox/trunk/src/world_entities/terrain.cc
r3558 r3559 1 2 3 1 /* 4 2 orxonox - the future of 3D-vertical-scrollers … … 17 15 18 16 19 #include " proto_class.h"17 #include "terrain.h" 20 18 21 #include " stdincl.h" // maybe19 #include "glincl.h" 22 20 23 21 using namespace std; … … 26 24 /** 27 25 \brief standard constructor 28 \todo this constructor is not jet implemented - do it 26 29 27 */ 30 ProtoClass::ProtoClass()28 Terrain::Terrain () 31 29 { 32 this->setClassName ("ProtoClass"); 30 this->setClassName ("Terrain"); 31 this->build(); 33 32 } 34 33 … … 38 37 39 38 */ 40 ProtoClass::~ProtoClass()39 Terrain::~Terrain () 41 40 { 42 41 // delete what has to be deleted here 42 // delete this->model; 43 44 glDeleteLists(this->objectList, 1); 43 45 } 44 46 45 /**46 \brief nonsense - delete this method47 \param realy nothing to give48 \returns true or false - probably nothing?49 47 50 this is just to show the doxygen abilities (this for example is an extension for a long comment) 51 */ 52 bool ProtoClass::doNonSense (int nothing) {} 48 void Terrain::build() 49 { 50 objectList = glGenLists(1); 51 glNewList (objectList, GL_COMPILE); 52 53 glColor3f(1.0,0,0); 54 55 int sizeX = 100; 56 int sizeZ = 80; 57 float length = 1000; 58 float width = 200; 59 float widthX = float (length /sizeX); 60 float widthZ = float (width /sizeZ); 61 62 float height [sizeX][sizeZ]; 63 Vector normal_vectors[sizeX][sizeZ]; 64 65 66 for ( int i = 0; i<sizeX-1; i+=1) 67 for (int j = 0; j<sizeZ-1;j+=1) 68 //height[i][j] = rand()/20046 + (j-25)*(j-25)/30; 69 #ifdef __WIN32__ 70 height[i][j]=(sin((float)j/3)*rand()*i/182400)*.5; 71 #else 72 height[i][j]=(sin((float)j/3)*rand()*(long)i/6282450500.0)*.5; 73 #endif 74 75 //Die Huegel ein wenig glaetten 76 for (int h=1; h<2;h++) 77 for (int i=1;i<sizeX-2 ;i+=1 ) 78 for(int j=1;j<sizeZ-2;j+=1) 79 height[i][j]=(height[i+1][j]+height[i][j+1]+height[i-1][j]+height[i][j-1])/4; 80 81 //Berechnung von normalen Vektoren 82 for(int i=1;i<sizeX-2;i+=1) 83 for(int j=1;j<sizeZ-2 ;j+=1) 84 { 85 Vector v1 = Vector (widthX*(1), height[i][j], widthZ*(j) ); 86 Vector v2 = Vector (widthX*(i-1), height[i-1][j], widthZ*(j)); 87 Vector v3 = Vector (widthX*(i), height[i][j+1], widthZ*(j+1)); 88 Vector v4 = Vector (widthX*(i+1), height[i+1][j], widthZ*(j)); 89 Vector v5 = Vector (widthX*(i), height[i][j-1], widthZ*(j-1)); 90 91 Vector c1 = v2 - v1; 92 Vector c2 = v3 - v1; 93 Vector c3= v4 - v1; 94 Vector c4 = v5 - v1; 95 Vector zero = Vector (0,0,0); 96 normal_vectors[i][j]=c1.cross(v3-v5)+c2.cross(v4-v2)+c3.cross(v5-v3)+c4.cross(v2-v4); 97 normal_vectors[i][j].normalize(); 98 } 99 100 glBegin(GL_QUADS); 101 int snowheight=3; 102 for ( int i = 0; i<sizeX; i+=1) 103 for (int j = 0; j<sizeZ;j+=1) 104 { 105 Vector v1 = Vector (widthX*(i), height[i][j]-20, widthZ*(j) -width/2); 106 Vector v2 = Vector (widthX*(i+1), height[i+1][j]-20, widthZ*(j) -width/2); 107 Vector v3 = Vector (widthX*(i+1), height[i+1][j+1]-20, widthZ*(j+1)-width/2); 108 Vector v4 = Vector (widthX*(i), height[i][j+1]-20, widthZ*(j+1)-width/2); 109 float a[3]; 110 if(height[i][j]<snowheight){ 111 a[0]=0; 112 a[1]=1.0-height[i][j]/10-.3; 113 a[2]=0; 114 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 115 } 116 else{ 117 a[0]=1.0; 118 a[1]=1.0; 119 a[2]=1.0; 120 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 121 122 } 123 glNormal3f(normal_vectors[i][j].x, normal_vectors[i][j].y, normal_vectors[i][j].z); 124 glVertex3f(v1.x, v1.y, v1.z); 125 if(height[i+1][j]<snowheight){ 126 a[0]=0; 127 a[1] =1.0-height[i+1][j]/10-.3; 128 a[2]=0; 129 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 130 } 131 else{ 132 a[0]=1.0; 133 a[1]=1.0; 134 a[2]=1.0; 135 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 136 137 } 138 glNormal3f(normal_vectors[i+1][j].x, normal_vectors[i+1][j].y, normal_vectors[i+1][j].z); 139 glVertex3f(v2.x, v2.y, v2.z); 140 if(height[i+1][j+1]<snowheight){ 141 a[0]=0; 142 a[1] =1.0-height[i+1][j+1]/10-.3; 143 a[2]=0; 144 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 145 } 146 else{ 147 a[0]=1.0; 148 a[1]=1.0; 149 a[2]=1.0; 150 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 151 152 153 } 154 glNormal3f(normal_vectors[i+1][j+1].x, normal_vectors[i+1][j+1].y, normal_vectors[i+1][j+1].z); 155 glVertex3f(v3.x, v3.y, v3.z); 156 if(height[i][j+1]<snowheight){ 157 a[0]=0; 158 a[1] =1.0-height[i+1][j+1]/10-.3; 159 a[2]=0; 160 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 161 } 162 else{ 163 a[0]=1.0; 164 a[1]=1.0; 165 a[2]=1.0; 166 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 167 } 168 glNormal3f(normal_vectors[i][j+1].x, normal_vectors[i][j+1].y, normal_vectors[i][j+1].z); 169 glVertex3f(v4.x, v4.y, v4.z); 170 171 } 172 glEnd(); 173 glEndList(); 174 } 175 176 177 178 void Terrain::draw () 179 { 180 glMatrixMode(GL_MODELVIEW); 181 glPushMatrix(); 182 float matrix[4][4]; 183 184 /* translate */ 185 glTranslatef (this->getAbsCoor ().x, 186 this->getAbsCoor ().y, 187 this->getAbsCoor ().z); 188 /* rotate */ 189 this->getAbsDir ().matrix (matrix); 190 glMultMatrixf((float*)matrix); 191 192 glCallList(objectList); 193 // this->model->draw(); 194 glPopMatrix(); 195 } -
orxonox/trunk/src/world_entities/terrain.h
r3558 r3559 1 1 /*! 2 \file proto_class.h 3 \brief Definition of the proto class template, used quickly start work 4 \todo Example: this shows how to use simply add a Marker that here has to be done something. 2 \file terrain.h 3 \brief Defines and handles the terrain of the World 5 4 6 The Protoclass exists, to help you quikly getting the run for how to develop in orxonox. 7 It is an example for the CODING-CONVENTION, and a starting-point for every class. 5 \todo implement it 6 7 The terrain should either be build from a Model a OBJModel or from a HeightMap. 8 8 */ 9 9 10 #ifndef _ PROTO_CLASS_H11 #define _ PROTO_CLASS_H10 #ifndef _TERRAIN_H 11 #define _TERRAIN_H 12 12 13 #include "what realy has to be included" 14 #include "base_object.h" 13 #include "world_entity.h" 15 14 16 15 // FORWARD DEFINITION \\ 17 class someClassWeNeed;18 16 19 20 /*class Test;*/ /* forward definition of class Test (without including it here!)*/ 21 22 //! A default class that aids you to start creating a new class 23 /** 24 here can be some longer description of this class 25 */ 26 class ProtoClass : public BaseObject { 17 //! A Class to handle Terrain of orxonox 18 class Terrain : public WorldEntity 19 { 27 20 28 21 public: 29 ProtoClass();30 virtual ~ ProtoClass();22 Terrain(); 23 virtual ~Terrain(); 31 24 32 bool doNonSense (int nothing); 25 void build(); 26 virtual void draw(); 33 27 34 28 private: 35 int nonSense; //!< doxygen tag here like this for all the variables - delete this variable if you use this36 29 30 int objectList; 37 31 }; 38 32 39 #endif /* _ PROTO_CLASS_H */33 #endif /* _TERRAIN_H */
Note: See TracChangeset
for help on using the changeset viewer.