static void sphereTraverseTetra(std::vector<Vec3f> &verts, int depth) { float t = sqrtf(0.5f); Vec3f vBL(-1.0f, 0.0f, -t); Vec3f vBR( 1.0f, 0.0f, -t); Vec3f vFD( 0.0f, -1.0f, t); Vec3f vFU( 0.0f, 1.0f, t); triTraverse(verts, vBL, vFD, vFU, depth, false); triTraverse(verts, vFD, vBR, vFU, depth, false); triTraverse(verts, vBR, vBL, vFU, depth, false); triTraverse(verts, vBL, vBR, vFD, depth, false); spherize(verts); }
void VisualComponent::postInit() { Vec2D<double> vTL(-width / 2.0f, -height / 2.0f); Vec2D<double> vBL(-width / 2.0f, height / 2.0f); Vec2D<double> vBR(width / 2.0f, height / 2.0f); Vec2D<double> vTR(width / 2.0f, -height / 2.0f); Vec2D<double> texTL(0, 0); Vec2D<double> texBL(0, 1); Vec2D<double> texTR(1, 0); Vec2D<double> texBR(1, 1); // TL, BL, TR, BR vertexData.push_back(vTL); vertexData.push_back(vBL); vertexData.push_back(vTR); vertexData.push_back(vBR); textureData.push_back(texTL); textureData.push_back(texBL); textureData.push_back(texTR); textureData.push_back(texBR); }
static void sphereTraverseOcta(std::vector<Vec3f> &verts, int depth) { float t = sqrtf(0.5f); Vec3f vDn(0.0f, -1.0f, 0.0f); Vec3f vBL(-t, 0.0f, -t); Vec3f vFL(-t, 0.0f, t); Vec3f vFR( t, 0.0f, t); Vec3f vBR( t, 0.0f, -t); Vec3f vUp(0.0f, 1.0f, 0.0f); triTraverse(verts, vBL, vBR, vDn, depth, false); triTraverse(verts, vBR, vFR, vDn, depth, false); triTraverse(verts, vFR, vFL, vDn, depth, false); triTraverse(verts, vFL, vBL, vDn, depth, false); triTraverse(verts, vBL, vFL, vUp, depth, false); triTraverse(verts, vFL, vFR, vUp, depth, false); triTraverse(verts, vFR, vBR, vUp, depth, false); triTraverse(verts, vBR, vBL, vUp, depth, false); spherize(verts); }