#include #include #include #include #include #include #include #include #include #include "bernstein.hpp" #include "multiloop.hpp" #include "quadrature_multipoly.hpp" #include "binomial.hpp" #include "real.hpp" #include "uvector.hpp" #include "vector" #include "xarray.hpp" #include #include #include "organizer/primitive.hpp" #include "organizer/organizer.hpp" using namespace algoim::Organizer; using namespace algoim; void casePolyhedron1() { // std::vector> ps; // mesh std::vector vertices = {uvector3(-0.8, -0.8, -0.8), uvector3(-0.8, -0.8, 0.8), uvector3(-0.8, 0.8, -0.8), uvector3(-0.8, 0.8, 0.8), uvector3(0.8, -0.8, -0.8), uvector3(0.8, -0.8, 0.8), uvector3(0.8, 0.8, -0.8), uvector3(0.8, 0.8, 0.8)}; std::vector indices = {3, 2, 0, 1, // left 4, 6, 7, 5, // right 6, 2, 3, 7, // top 1, 0, 4, 5, // bottom 7, 3, 1, 5, // front 2, 6, 4, 0}; // back std::vector scan = {4, 8, 12, 16, 20, 24}; // ps.emplace_back(std::make_shared(vertices, indices, scan)); // ps.emplace_back(std::make_shared(0.8, 0., 1.)); // ps.emplace_back(std::make_shared(makeSphere(0.2))); // ps.emplace_back(std::make_shared(MeshDesc(vertices, indices, scan))); basicTask(std::make_shared(MeshDesc(vertices, indices, scan))); } void casePolyhedron2() { // std::vector> ps; // mesh std::vector vertices = {uvector3(-0.8, -0.8, -0.8), uvector3(-0.8, -0.8, 0.8), uvector3(-0.8, 0.8, -0.8), uvector3(-0.8, 0.8, 0.8), uvector3(0.8, -0.8, -0.8), uvector3(0.8, -0.8, 0.8), uvector3(0.8, 0.8, -0.8), uvector3(0.8, 0.8, 0.8)}; std::vector indices = { 3, 2, 0, 1, // left 6, 2, 3, 7 // top }; std::vector scan = {4, 8}; // ps.emplace_back(std::make_shared(vertices, indices, scan)); // ps.emplace_back(std::make_shared(0.8, 0., 1.)); // ps.emplace_back(std::make_shared(makeSphere(0.2))); // ps.emplace_back(std::make_shared(MeshDesc(vertices, indices, scan))); basicTask(std::make_shared(MeshDesc(vertices, indices, scan))); } void casePolyhedron3() { std::vector> primitiveDescriptions; // std::vector vertices = {uvector3(-1.6, 0, 0), // uvector3(-1.6, 0, 1.6), // uvector3(-1.6, 1.6, 0), // uvector3(-1.6, 1.6, 1.6), // uvector3(1.6, 0, 0), // uvector3(1.6, 0, 1.6), // uvector3(1.6, 1.6, 0), // uvector3(1.6, 1.6, 1.6)}; std::vector vertices = {uvector3(-0.8, -0.8, -0.8), uvector3(-0.8, -0.8, 0.8), uvector3(-0.8, 0.8, -0.8), uvector3(-0.8, 0.8, 0.8), uvector3(0.8, -0.8, -0.8), uvector3(0.8, -0.8, 0.8), uvector3(0.8, 0.8, -0.8), uvector3(0.8, 0.8, 0.8)}; std::vector indices = {3, 2, 0, 1, // left 6, 2, 3, 7, // top // 7, // 3, // 1, // 5, // front 2, 6, 4, 0}; // back std::vector scan = {4, 8, 12}; basicTask(std::make_shared(MeshDesc(vertices, indices, scan))); } void casePolyhedronSphere() { // PI * r^3 / 6 auto phi0 = std::make_shared(SphereDesc(0.8, uvector3(-0.8, 0.8, -0.8), 1.)); std::vector vertices = {uvector3(-0.8, -0.8, -0.8), uvector3(-0.8, -0.8, 0.8), uvector3(-0.8, 0.8, -0.8), uvector3(-0.8, 0.8, 0.8), uvector3(0.8, -0.8, -0.8), uvector3(0.8, -0.8, 0.8), uvector3(0.8, 0.8, -0.8), uvector3(0.8, 0.8, 0.8)}; std::vector indices = {3, 2, 0, 1, // left 6, 2, 3, 7, // top 2, 6, 4, 0}; // back std::vector scan = {4, 8, 12}; std::vector> primitiveDescriptions(2); primitiveDescriptions[0] = phi0; primitiveDescriptions[1] = std::make_shared(MeshDesc(vertices, indices, scan)); basicTask(primitiveDescriptions); } void testPrimitive() { casePolyhedron1(); // casePolyhedronSphere(); }