Changeset 7729 in orxonox.OLD for trunk/src/lib/graphics
- Timestamp:
- May 19, 2006, 3:07:09 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/graphics/importer/primitive_model.cc
r6912 r7729 34 34 { 35 35 switch (type) 36 {36 { 37 37 default: 38 38 case PRIM_CUBE: … … 51 51 this->planeModel(size, detail); 52 52 break; 53 }53 } 54 54 this->finalize(); 55 55 } … … 79 79 // defining the Vertices 80 80 for (float i = 0; i < df *2.0; i+=1.0) 81 {82 float vi = i/df * PI;83 for (float j = -df / 2.0 +1.0; j <= df / 2.0; j+=1.0 *df/(df+1.0))84 {85 float vj = j/df *PI;86 this->addVertexNormal(cos(vi) * cos(vj),87 sin(vj),88 sin(vi) * cos(vj));89 90 this->addVertex(size * cos(vi) * cos(vj),91 size * sin(vj),92 size * sin(vi) * cos(vj));93 94 this->addVertexTexture( i / (df *2.0),95 (j-1.0)/(df)+.5);96 }97 }81 { 82 float vi = i/df * PI; 83 for (float j = -df / 2.0 +1.0; j <= df / 2.0; j+=1.0 *df/(df+1.0)) 84 { 85 float vj = j/df *PI; 86 this->addVertexNormal(cos(vi) * cos(vj), 87 sin(vj), 88 sin(vi) * cos(vj)); 89 90 this->addVertex(size * cos(vi) * cos(vj), 91 size * sin(vj), 92 size * sin(vi) * cos(vj)); 93 94 this->addVertexTexture( i / (df *2.0), 95 (j-1.0)/(df)+.5); 96 } 97 } 98 98 this->addVertex(0, -size, 0); 99 99 this->addVertexNormal(0, -1, 0); … … 106 106 unsigned int v1, v2, v3, v4; 107 107 for (int i = 0; i <= detail * 2 -1; i++) 108 {109 for (int j = 0; j <= detail; j++)110 {111 112 v1 = i*detail + j-1;113 v4 = i*detail + j;114 115 if (i == detail*2 -1)116 {117 v2 = j-1;118 v3 = j;119 }120 else121 {122 v2 = (i+1)*detail + j-1;123 v3 = (i+1)*detail + j;124 }125 126 if (j == 0)127 {128 v1 = this->getVertexCount() - 2;129 this->addFace(3, VERTEX_TEXCOORD_NORMAL, v1, v1, v1, v3, v3, v3, v4, v4, v4);130 }131 else if (j == detail)132 {133 v3 = this->getVertexCount()-1;134 this->addFace(3, VERTEX_TEXCOORD_NORMAL, v1, v1, v1, v2, v2, v2, v3, v3, v3);135 }136 else137 this->addFace(4, VERTEX_TEXCOORD_NORMAL, v1, v1, v1, v2, v2, v2, v3, v3, v3, v4, v4, v4);138 }139 }108 { 109 for (int j = 0; j <= detail; j++) 110 { 111 112 v1 = i*detail + j-1; 113 v4 = i*detail + j; 114 115 if (i == detail*2 -1) 116 { 117 v2 = j-1; 118 v3 = j; 119 } 120 else 121 { 122 v2 = (i+1)*detail + j-1; 123 v3 = (i+1)*detail + j; 124 } 125 126 if (j == 0) 127 { 128 v1 = this->getVertexCount() - 2; 129 this->addFace(3, VERTEX_TEXCOORD_NORMAL, v1, v1, v1, v3, v3, v3, v4, v4, v4); 130 } 131 else if (j == detail) 132 { 133 v3 = this->getVertexCount()-1; 134 this->addFace(3, VERTEX_TEXCOORD_NORMAL, v1, v1, v1, v2, v2, v2, v3, v3, v3); 135 } 136 else 137 this->addFace(4, VERTEX_TEXCOORD_NORMAL, v1, v1, v1, v2, v2, v2, v3, v3, v3, v4, v4, v4); 138 } 139 } 140 140 } 141 141 /** … … 150 150 // defining Points of the Cylinder. 151 151 for (float phi = 0.0; phi < 2.0*PI; phi += 2.0*PI/(float)detail) 152 {153 this->addVertex(size*cos(phi), size*sin(phi), -size);154 this->addVertex(size*cos(phi), size*sin(phi), size);155 count ++;156 }152 { 153 this->addVertex(size*cos(phi), size*sin(phi), -size); 154 this->addVertex(size*cos(phi), size*sin(phi), size); 155 count ++; 156 } 157 157 this->addVertex(0, 0, -size); 158 158 this->addVertex(0, 0, size); 159 159 160 160 if (count != detail) 161 { 161 162 PRINTF(1)("calculation error, count should be %d but is %d.\n", detail, count); 162 163 } 163 164 // adding Faces 164 165 for (int i = 0; i < detail-1; i++) 165 {166 int p1, p2, p3, p4;167 p1 = 2*i;168 p2 = 2*i+1;169 p3 = 2*i+3;170 p4 = 2*i+2;171 // something is wrong here172 this->addFace(4, VERTEX_ONLY, p1, p2, p3, p4);173 this->addFace(3, VERTEX_ONLY, p4, p1, 2*detail);174 this->addFace(3, VERTEX_ONLY, p2, p3, 2*detail+1);175 }166 { 167 int p1, p2, p3, p4; 168 p1 = 2*i; 169 p2 = 2*i+1; 170 p3 = 2*i+3; 171 p4 = 2*i+2; 172 // something is wrong here 173 this->addFace(4, VERTEX_ONLY, p1, p2, p3, p4); 174 this->addFace(3, VERTEX_ONLY, p4, p1, 2*detail); 175 this->addFace(3, VERTEX_ONLY, p2, p3, 2*detail+1); 176 } 176 177 // caps 177 178 this->addFace(4, VERTEX_ONLY, 2*detail-2, 2*detail-1, 1, 0); … … 195 196 // defining the Vertices 196 197 for (float i = 0; i < df; i+=1.0) 197 {198 float vi = i/df *2.0*PI;199 this->addVertex(size* sin(vi),200 -size,201 size* cos(vi));202 }198 { 199 float vi = i/df *2.0*PI; 200 this->addVertex(size* sin(vi), 201 -size, 202 size* cos(vi)); 203 } 203 204 204 205 //defining Faces 205 206 for (int i = 0; i < detail; i++) 206 {207 unsigned int v1, v2;208 v1 = i+2;209 if (i == detail -1)210 v2 = 2;211 else212 v2 = i+3;213 this->addFace(3, VERTEX_ONLY, 0, v1, v2);214 this->addFace(3, VERTEX_ONLY, 1, v1, v2);215 }207 { 208 unsigned int v1, v2; 209 v1 = i+2; 210 if (i == detail -1) 211 v2 = 2; 212 else 213 v2 = i+3; 214 this->addFace(3, VERTEX_ONLY, 0, v1, v2); 215 this->addFace(3, VERTEX_ONLY, 1, v1, v2); 216 } 216 217 } 217 218 … … 226 227 for (int i = 0; i < detail; i++) 227 228 for (int j = 0; j < detail; j++) 228 {229 this->addVertex(((float)i/(float)(detail-1) -.5)*size,230 0,231 ((float)j/(float)(detail-1) -.5)*size);232 this->addVertexTexture((float)i/(float)(detail-1),233 (float)j/(float)(detail-1));234 }229 { 230 this->addVertex(((float)i/(float)(detail-1) -.5)*size, 231 0, 232 ((float)j/(float)(detail-1) -.5)*size); 233 this->addVertexTexture((float)i/(float)(detail-1), 234 (float)j/(float)(detail-1)); 235 } 235 236 //defining Faces 236 237 unsigned int v1, v2, v3, v4; 237 238 for (int i = 0; i < detail-1; i++) 238 239 for (int j = 0; j < detail-1; j++) 239 {240 v1 = i*detail + j;241 v2 = (i+1)*detail + j;242 v3 = (i+1)*detail + (j+1);243 v4 = i*detail + (j+1);244 this->addFace(4, VERTEX_TEXCOORD, v1, v1, v2, v2, v3, v3, v4, v4);245 }246 } 240 { 241 v1 = i*detail + j; 242 v2 = (i+1)*detail + j; 243 v3 = (i+1)*detail + (j+1); 244 v4 = i*detail + (j+1); 245 this->addFace(4, VERTEX_TEXCOORD, v1, v1, v2, v2, v3, v3, v4, v4); 246 } 247 }
Note: See TracChangeset
for help on using the changeset viewer.










