|
|
|
|
@ -16,76 +16,98 @@
|
|
|
|
|
#include "Cube.h" |
|
|
|
|
|
|
|
|
|
#include "Math/Point3D.h" |
|
|
|
|
#include "Trade/MeshData3D.h" |
|
|
|
|
|
|
|
|
|
namespace Magnum { namespace Primitives { |
|
|
|
|
|
|
|
|
|
Cube::Cube(): MeshData3D(Mesh::Primitive::Triangles, new std::vector<std::uint32_t>{ |
|
|
|
|
0, 1, 2, 0, 2, 3, /* +Z */ |
|
|
|
|
4, 5, 6, 4, 6, 7, /* +X */ |
|
|
|
|
8, 9, 10, 8, 10, 11, /* +Y */ |
|
|
|
|
12, 13, 14, 12, 14, 15, /* -Z */ |
|
|
|
|
16, 17, 18, 16, 18, 19, /* -Y */ |
|
|
|
|
20, 21, 22, 20, 22, 23 /* -X */ |
|
|
|
|
}, {new std::vector<Point3D>{ |
|
|
|
|
{-1.0f, -1.0f, 1.0f}, |
|
|
|
|
{ 1.0f, -1.0f, 1.0f}, |
|
|
|
|
{ 1.0f, 1.0f, 1.0f}, /* +Z */ |
|
|
|
|
{-1.0f, 1.0f, 1.0f}, |
|
|
|
|
|
|
|
|
|
{ 1.0f, -1.0f, 1.0f}, |
|
|
|
|
{ 1.0f, -1.0f, -1.0f}, |
|
|
|
|
{ 1.0f, 1.0f, -1.0f}, /* +X */ |
|
|
|
|
{ 1.0f, 1.0f, 1.0f}, |
|
|
|
|
|
|
|
|
|
{-1.0f, 1.0f, 1.0f}, |
|
|
|
|
{ 1.0f, 1.0f, 1.0f}, |
|
|
|
|
{ 1.0f, 1.0f, -1.0f}, /* +Y */ |
|
|
|
|
{-1.0f, 1.0f, -1.0f}, |
|
|
|
|
|
|
|
|
|
{ 1.0f, -1.0f, -1.0f}, |
|
|
|
|
{-1.0f, -1.0f, -1.0f}, |
|
|
|
|
{-1.0f, 1.0f, -1.0f}, /* -Z */ |
|
|
|
|
{ 1.0f, 1.0f, -1.0f}, |
|
|
|
|
|
|
|
|
|
{-1.0f, -1.0f, -1.0f}, |
|
|
|
|
{ 1.0f, -1.0f, -1.0f}, |
|
|
|
|
{ 1.0f, -1.0f, 1.0f}, /* -Y */ |
|
|
|
|
{-1.0f, -1.0f, 1.0f}, |
|
|
|
|
|
|
|
|
|
{-1.0f, -1.0f, -1.0f}, |
|
|
|
|
{-1.0f, -1.0f, 1.0f}, |
|
|
|
|
{-1.0f, 1.0f, 1.0f}, /* -X */ |
|
|
|
|
{-1.0f, 1.0f, -1.0f} |
|
|
|
|
}}, {new std::vector<Vector3>{ |
|
|
|
|
{ 0.0f, 0.0f, 1.0f}, |
|
|
|
|
{ 0.0f, 0.0f, 1.0f}, |
|
|
|
|
{ 0.0f, 0.0f, 1.0f}, /* +Z */ |
|
|
|
|
{ 0.0f, 0.0f, 1.0f}, |
|
|
|
|
|
|
|
|
|
{ 1.0f, 0.0f, 0.0f}, |
|
|
|
|
{ 1.0f, 0.0f, 0.0f}, |
|
|
|
|
{ 1.0f, 0.0f, 0.0f}, /* +X */ |
|
|
|
|
{ 1.0f, 0.0f, 0.0f}, |
|
|
|
|
|
|
|
|
|
{ 0.0f, 1.0f, 0.0f}, |
|
|
|
|
{ 0.0f, 1.0f, 0.0f}, |
|
|
|
|
{ 0.0f, 1.0f, 0.0f}, /* +Y */ |
|
|
|
|
{ 0.0f, 1.0f, 0.0f}, |
|
|
|
|
|
|
|
|
|
{ 0.0f, 0.0f, -1.0f}, |
|
|
|
|
{ 0.0f, 0.0f, -1.0f}, |
|
|
|
|
{ 0.0f, 0.0f, -1.0f}, /* -Z */ |
|
|
|
|
{ 0.0f, 0.0f, -1.0f}, |
|
|
|
|
|
|
|
|
|
{ 0.0f, -1.0f, 0.0f}, |
|
|
|
|
{ 0.0f, -1.0f, 0.0f}, |
|
|
|
|
{ 0.0f, -1.0f, 0.0f}, /* -Y */ |
|
|
|
|
{ 0.0f, -1.0f, 0.0f}, |
|
|
|
|
|
|
|
|
|
{-1.0f, 0.0f, 0.0f}, |
|
|
|
|
{-1.0f, 0.0f, 0.0f}, |
|
|
|
|
{-1.0f, 0.0f, 0.0f}, /* -X */ |
|
|
|
|
{-1.0f, 0.0f, 0.0f} |
|
|
|
|
}}, {}) {} |
|
|
|
|
Trade::MeshData3D Cube::solid() { |
|
|
|
|
return Trade::MeshData3D(Mesh::Primitive::Triangles, new std::vector<std::uint32_t>{ |
|
|
|
|
0, 1, 2, 0, 2, 3, /* +Z */ |
|
|
|
|
4, 5, 6, 4, 6, 7, /* +X */ |
|
|
|
|
8, 9, 10, 8, 10, 11, /* +Y */ |
|
|
|
|
12, 13, 14, 12, 14, 15, /* -Z */ |
|
|
|
|
16, 17, 18, 16, 18, 19, /* -Y */ |
|
|
|
|
20, 21, 22, 20, 22, 23 /* -X */ |
|
|
|
|
}, {new std::vector<Point3D>{ |
|
|
|
|
{-1.0f, -1.0f, 1.0f}, |
|
|
|
|
{ 1.0f, -1.0f, 1.0f}, |
|
|
|
|
{ 1.0f, 1.0f, 1.0f}, /* +Z */ |
|
|
|
|
{-1.0f, 1.0f, 1.0f}, |
|
|
|
|
|
|
|
|
|
{ 1.0f, -1.0f, 1.0f}, |
|
|
|
|
{ 1.0f, -1.0f, -1.0f}, |
|
|
|
|
{ 1.0f, 1.0f, -1.0f}, /* +X */ |
|
|
|
|
{ 1.0f, 1.0f, 1.0f}, |
|
|
|
|
|
|
|
|
|
{-1.0f, 1.0f, 1.0f}, |
|
|
|
|
{ 1.0f, 1.0f, 1.0f}, |
|
|
|
|
{ 1.0f, 1.0f, -1.0f}, /* +Y */ |
|
|
|
|
{-1.0f, 1.0f, -1.0f}, |
|
|
|
|
|
|
|
|
|
{ 1.0f, -1.0f, -1.0f}, |
|
|
|
|
{-1.0f, -1.0f, -1.0f}, |
|
|
|
|
{-1.0f, 1.0f, -1.0f}, /* -Z */ |
|
|
|
|
{ 1.0f, 1.0f, -1.0f}, |
|
|
|
|
|
|
|
|
|
{-1.0f, -1.0f, -1.0f}, |
|
|
|
|
{ 1.0f, -1.0f, -1.0f}, |
|
|
|
|
{ 1.0f, -1.0f, 1.0f}, /* -Y */ |
|
|
|
|
{-1.0f, -1.0f, 1.0f}, |
|
|
|
|
|
|
|
|
|
{-1.0f, -1.0f, -1.0f}, |
|
|
|
|
{-1.0f, -1.0f, 1.0f}, |
|
|
|
|
{-1.0f, 1.0f, 1.0f}, /* -X */ |
|
|
|
|
{-1.0f, 1.0f, -1.0f} |
|
|
|
|
}}, {new std::vector<Vector3>{ |
|
|
|
|
{ 0.0f, 0.0f, 1.0f}, |
|
|
|
|
{ 0.0f, 0.0f, 1.0f}, |
|
|
|
|
{ 0.0f, 0.0f, 1.0f}, /* +Z */ |
|
|
|
|
{ 0.0f, 0.0f, 1.0f}, |
|
|
|
|
|
|
|
|
|
{ 1.0f, 0.0f, 0.0f}, |
|
|
|
|
{ 1.0f, 0.0f, 0.0f}, |
|
|
|
|
{ 1.0f, 0.0f, 0.0f}, /* +X */ |
|
|
|
|
{ 1.0f, 0.0f, 0.0f}, |
|
|
|
|
|
|
|
|
|
{ 0.0f, 1.0f, 0.0f}, |
|
|
|
|
{ 0.0f, 1.0f, 0.0f}, |
|
|
|
|
{ 0.0f, 1.0f, 0.0f}, /* +Y */ |
|
|
|
|
{ 0.0f, 1.0f, 0.0f}, |
|
|
|
|
|
|
|
|
|
{ 0.0f, 0.0f, -1.0f}, |
|
|
|
|
{ 0.0f, 0.0f, -1.0f}, |
|
|
|
|
{ 0.0f, 0.0f, -1.0f}, /* -Z */ |
|
|
|
|
{ 0.0f, 0.0f, -1.0f}, |
|
|
|
|
|
|
|
|
|
{ 0.0f, -1.0f, 0.0f}, |
|
|
|
|
{ 0.0f, -1.0f, 0.0f}, |
|
|
|
|
{ 0.0f, -1.0f, 0.0f}, /* -Y */ |
|
|
|
|
{ 0.0f, -1.0f, 0.0f}, |
|
|
|
|
|
|
|
|
|
{-1.0f, 0.0f, 0.0f}, |
|
|
|
|
{-1.0f, 0.0f, 0.0f}, |
|
|
|
|
{-1.0f, 0.0f, 0.0f}, /* -X */ |
|
|
|
|
{-1.0f, 0.0f, 0.0f} |
|
|
|
|
}}, {}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Trade::MeshData3D Cube::wireframe() { |
|
|
|
|
return Trade::MeshData3D(Mesh::Primitive::Lines, new std::vector<std::uint32_t>{ |
|
|
|
|
0, 1, 1, 2, 2, 3, 3, 0, /* +Z */ |
|
|
|
|
4, 5, 5, 6, 6, 7, 7, 4, /* -Z */ |
|
|
|
|
1, 5, 2, 6, /* +X */ |
|
|
|
|
0, 4, 3, 7 /* -X */ |
|
|
|
|
}, {new std::vector<Point3D>{ |
|
|
|
|
{-1.0f, -1.0f, 1.0f}, |
|
|
|
|
{ 1.0f, -1.0f, 1.0f}, |
|
|
|
|
{ 1.0f, 1.0f, 1.0f}, |
|
|
|
|
{-1.0f, 1.0f, 1.0f}, |
|
|
|
|
|
|
|
|
|
{-1.0f, -1.0f, -1.0f}, |
|
|
|
|
{ 1.0f, -1.0f, -1.0f}, |
|
|
|
|
{ 1.0f, 1.0f, -1.0f}, |
|
|
|
|
{-1.0f, 1.0f, -1.0f} |
|
|
|
|
}}, {}, {}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
}} |
|
|
|
|
|