| 409 | } |
| 410 | |
| 411 | TriangleMesh* createCube (const Vec3fa& p, float r) |
| 412 | { |
| 413 | /* create triangle mesh */ |
| 414 | TriangleMesh* cube = new TriangleMesh(); |
| 415 | cube->num_vertices = 8; |
| 416 | cube->num_triangles = 12; |
| 417 | cube->vertices = (Vertex*) alignedMalloc(sizeof(Vertex)*cube->num_vertices+1, 16); |
| 418 | cube->triangles = (Triangle*) alignedMalloc(sizeof(Triangle)*cube->num_triangles, 16); |
| 419 | |
| 420 | /* set vertices and vertex colors */ |
| 421 | cube->vertices[0].x = -r+p.x; cube->vertices[0].y = -r+p.y; cube->vertices[0].z = -r+p.z; |
| 422 | cube->vertices[1].x = -r+p.x; cube->vertices[1].y = -r+p.y; cube->vertices[1].z = +r+p.z; |
| 423 | cube->vertices[2].x = -r+p.x; cube->vertices[2].y = +r+p.y; cube->vertices[2].z = -r+p.z; |
| 424 | cube->vertices[3].x = -r+p.x; cube->vertices[3].y = +r+p.y; cube->vertices[3].z = +r+p.z; |
| 425 | cube->vertices[4].x = +r+p.x; cube->vertices[4].y = -r+p.y; cube->vertices[4].z = -r+p.z; |
| 426 | cube->vertices[5].x = +r+p.x; cube->vertices[5].y = -r+p.y; cube->vertices[5].z = +r+p.z; |
| 427 | cube->vertices[6].x = +r+p.x; cube->vertices[6].y = +r+p.y; cube->vertices[6].z = -r+p.z; |
| 428 | cube->vertices[7].x = +r+p.x; cube->vertices[7].y = +r+p.y; cube->vertices[7].z = +r+p.z; |
| 429 | |
| 430 | /* set triangles and face colors */ |
| 431 | int tri = 0; |
| 432 | |
| 433 | // left side |
| 434 | cube->triangles[tri].v0 = 0; cube->triangles[tri].v1 = 1; cube->triangles[tri].v2 = 2; tri++; |
| 435 | cube->triangles[tri].v0 = 1; cube->triangles[tri].v1 = 3; cube->triangles[tri].v2 = 2; tri++; |
| 436 | |
| 437 | // right side |
| 438 | cube->triangles[tri].v0 = 4; cube->triangles[tri].v1 = 6; cube->triangles[tri].v2 = 5; tri++; |
| 439 | cube->triangles[tri].v0 = 5; cube->triangles[tri].v1 = 6; cube->triangles[tri].v2 = 7; tri++; |
| 440 | |
| 441 | // bottom side |
| 442 | cube->triangles[tri].v0 = 0; cube->triangles[tri].v1 = 4; cube->triangles[tri].v2 = 1; tri++; |
| 443 | cube->triangles[tri].v0 = 1; cube->triangles[tri].v1 = 4; cube->triangles[tri].v2 = 5; tri++; |
| 444 | |
| 445 | // top side |
| 446 | cube->triangles[tri].v0 = 2; cube->triangles[tri].v1 = 3; cube->triangles[tri].v2 = 6; tri++; |
| 447 | cube->triangles[tri].v0 = 3; cube->triangles[tri].v1 = 7; cube->triangles[tri].v2 = 6; tri++; |
| 448 | |
| 449 | // front side |
| 450 | cube->triangles[tri].v0 = 0; cube->triangles[tri].v1 = 2; cube->triangles[tri].v2 = 4; tri++; |
| 451 | cube->triangles[tri].v0 = 2; cube->triangles[tri].v1 = 6; cube->triangles[tri].v2 = 4; tri++; |
| 452 | |
| 453 | // back side |
| 454 | cube->triangles[tri].v0 = 1; cube->triangles[tri].v1 = 5; cube->triangles[tri].v2 = 3; tri++; |
| 455 | cube->triangles[tri].v0 = 3; cube->triangles[tri].v1 = 5; cube->triangles[tri].v2 = 7; tri++; |
| 456 | |
| 457 | return cube; |
| 458 | } |
| 459 | |
| 460 | TriangleMesh* createPlane ( |
| 461 | AffineSpace3fa const& M, // transformation |
no test coverage detected