|
@ -35,14 +35,9 @@ void casePolyhedron1() |
|
|
// std::vector<std::shared_ptr<PrimitiveDesc>> ps;
|
|
|
// std::vector<std::shared_ptr<PrimitiveDesc>> ps;
|
|
|
|
|
|
|
|
|
// mesh
|
|
|
// mesh
|
|
|
std::vector<uvector3> vertices = {uvector3(-0.8, -0.8, -0.8), |
|
|
std::vector<uvector3> 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), |
|
|
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<int> indices = {3, 2, 0, 1, // left
|
|
|
std::vector<int> indices = {3, 2, 0, 1, // left
|
|
|
4, 6, 7, 5, // right
|
|
|
4, 6, 7, 5, // right
|
|
|
6, 2, 3, 7, // top
|
|
|
6, 2, 3, 7, // top
|
|
@ -63,23 +58,14 @@ void casePolyhedron2() |
|
|
// std::vector<std::shared_ptr<PrimitiveDesc>> ps;
|
|
|
// std::vector<std::shared_ptr<PrimitiveDesc>> ps;
|
|
|
|
|
|
|
|
|
// mesh
|
|
|
// mesh
|
|
|
std::vector<uvector3> vertices = {uvector3(-0.8, -0.8, -0.8), |
|
|
std::vector<uvector3> 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), |
|
|
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<int> indices = { |
|
|
std::vector<int> indices = { |
|
|
3, |
|
|
3, 2, 0, |
|
|
2, |
|
|
|
|
|
0, |
|
|
|
|
|
1, // left
|
|
|
1, // left
|
|
|
6, |
|
|
6, 2, 3, |
|
|
2, |
|
|
7 // top
|
|
|
3, |
|
|
|
|
|
7 // top
|
|
|
|
|
|
}; |
|
|
}; |
|
|
std::vector<int> scan = {4, 8}; |
|
|
std::vector<int> scan = {4, 8}; |
|
|
|
|
|
|
|
@ -101,31 +87,19 @@ void casePolyhedron3() |
|
|
// uvector3(1.6, 0, 1.6),
|
|
|
// uvector3(1.6, 0, 1.6),
|
|
|
// uvector3(1.6, 1.6, 0),
|
|
|
// uvector3(1.6, 1.6, 0),
|
|
|
// uvector3(1.6, 1.6, 1.6)};
|
|
|
// uvector3(1.6, 1.6, 1.6)};
|
|
|
std::vector<uvector3> vertices = {uvector3(-0.8, -0.8, -0.8), |
|
|
std::vector<uvector3> 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), |
|
|
uvector3(0.8, 0.8, -0.8), uvector3(0.8, 0.8, 0.8)}; |
|
|
uvector3(-0.8, 0.8, 0.8), |
|
|
std::vector<int> indices = {3, 2, 0, |
|
|
uvector3(0.8, -0.8, -0.8), |
|
|
1, // left
|
|
|
uvector3(0.8, -0.8, 0.8), |
|
|
6, 2, 3, |
|
|
uvector3(0.8, 0.8, -0.8), |
|
|
7, // top
|
|
|
uvector3(0.8, 0.8, 0.8)}; |
|
|
// 7,
|
|
|
std::vector<int> indices = {3, |
|
|
// 3,
|
|
|
2, |
|
|
// 1,
|
|
|
0, |
|
|
// 5, // front
|
|
|
1, // left
|
|
|
2, 6, 4, 0}; // back
|
|
|
6, |
|
|
std::vector<int> scan = {4, 8, 12}; |
|
|
2, |
|
|
|
|
|
3, |
|
|
|
|
|
7, // top
|
|
|
|
|
|
// 7,
|
|
|
|
|
|
// 3,
|
|
|
|
|
|
// 1,
|
|
|
|
|
|
// 5, // front
|
|
|
|
|
|
2, |
|
|
|
|
|
6, |
|
|
|
|
|
4, |
|
|
|
|
|
0}; // back
|
|
|
|
|
|
std::vector<int> scan = {4, 8, 12}; |
|
|
|
|
|
basicTask(std::make_shared<MeshDesc>(MeshDesc(vertices, indices, scan))); |
|
|
basicTask(std::make_shared<MeshDesc>(MeshDesc(vertices, indices, scan))); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -133,26 +107,14 @@ void casePolyhedronSphere() |
|
|
{ |
|
|
{ |
|
|
// PI * r^3 / 6
|
|
|
// PI * r^3 / 6
|
|
|
auto phi0 = std::make_shared<SphereDesc>(SphereDesc(0.8, uvector3(-0.8, 0.8, -0.8), 1.)); |
|
|
auto phi0 = std::make_shared<SphereDesc>(SphereDesc(0.8, uvector3(-0.8, 0.8, -0.8), 1.)); |
|
|
std::vector<uvector3> vertices = {uvector3(-0.8, -0.8, -0.8), |
|
|
std::vector<uvector3> 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), |
|
|
uvector3(0.8, 0.8, -0.8), uvector3(0.8, 0.8, 0.8)}; |
|
|
uvector3(-0.8, 0.8, 0.8), |
|
|
std::vector<int> indices = {3, 2, 0, |
|
|
uvector3(0.8, -0.8, -0.8), |
|
|
1, // left
|
|
|
uvector3(0.8, -0.8, 0.8), |
|
|
6, 2, 3, |
|
|
uvector3(0.8, 0.8, -0.8), |
|
|
7, // top
|
|
|
uvector3(0.8, 0.8, 0.8)}; |
|
|
2, 6, 4, 0}; // back
|
|
|
std::vector<int> indices = {3, |
|
|
|
|
|
2, |
|
|
|
|
|
0, |
|
|
|
|
|
1, // left
|
|
|
|
|
|
6, |
|
|
|
|
|
2, |
|
|
|
|
|
3, |
|
|
|
|
|
7, // top
|
|
|
|
|
|
2, |
|
|
|
|
|
6, |
|
|
|
|
|
4, |
|
|
|
|
|
0}; // back
|
|
|
|
|
|
std::vector<int> scan = {4, 8, 12}; |
|
|
std::vector<int> scan = {4, 8, 12}; |
|
|
std::vector<std::shared_ptr<PrimitiveDesc>> primitiveDescriptions(2); |
|
|
std::vector<std::shared_ptr<PrimitiveDesc>> primitiveDescriptions(2); |
|
|
primitiveDescriptions[0] = phi0; |
|
|
primitiveDescriptions[0] = phi0; |
|
@ -160,6 +122,25 @@ void casePolyhedronSphere() |
|
|
basicTask(primitiveDescriptions); |
|
|
basicTask(primitiveDescriptions); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void caseScene() |
|
|
|
|
|
{ |
|
|
|
|
|
std::vector<std::shared_ptr<PrimitiveDesc>> primitiveDescriptions(7); |
|
|
|
|
|
primitiveDescriptions[0] = std::make_shared<CuboidDesc>(CuboidDesc(0., 1.6)); |
|
|
|
|
|
primitiveDescriptions[1] = std::make_shared<CuboidDesc>(CuboidDesc(uvector3(0.6, 0.6, -0.6), 2.)); |
|
|
|
|
|
primitiveDescriptions[2] = std::make_shared<SphereDesc>(SphereDesc(0.7, uvector3(0.8, 0.8, 0.8), 1.)); |
|
|
|
|
|
primitiveDescriptions[3] = std::make_shared<SphereDesc>(SphereDesc(0.5, uvector3(-0.3, -0.8, 0.8), 1.)); |
|
|
|
|
|
primitiveDescriptions[4] = std::make_shared<ConeDesc>(ConeDesc(uvector3(0., -0.2, 0.), uvector3(0., -0.9, 0.), 0.4)); |
|
|
|
|
|
std::vector<uvector3> pyramidBottomVertices = { |
|
|
|
|
|
uvector3{-1, -1, 0}, |
|
|
|
|
|
uvector3{1, -1, 0}, |
|
|
|
|
|
uvector3{1, 1, 0}, |
|
|
|
|
|
uvector3{-1, 1, 0} |
|
|
|
|
|
}; |
|
|
|
|
|
primitiveDescriptions[5] = std::make_shared<PyramidDesc>(pyramidBottomVertices, uvector3{0, 0, 1}); |
|
|
|
|
|
primitiveDescriptions[4] = std::make_shared<CylinderDesc>(CylinderDesc(uvector3(-0.3, 0.3, 2.3), 0.4, 3.6, 1)); |
|
|
|
|
|
quadratureScene(primitiveDescriptions, uvector3(-1., -1.3, -1.6), uvector3(1.6, 1.6, 2.3), organizer::BlobTree()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
void testDeCasteljau() |
|
|
void testDeCasteljau() |
|
|
{ |
|
|
{ |
|
|
auto phiDesc = std::make_shared<SphereDesc>(SphereDesc(0.8, uvector3(0), 1.)); |
|
|
auto phiDesc = std::make_shared<SphereDesc>(SphereDesc(0.8, uvector3(0), 1.)); |
|
@ -172,10 +153,8 @@ void testDeCasteljau() |
|
|
|
|
|
|
|
|
// bernstein::deCasteljau(tensorBernstein, uvector3(0), uvector3(0.2690598923241497 + 0.0000001),
|
|
|
// bernstein::deCasteljau(tensorBernstein, uvector3(0), uvector3(0.2690598923241497 + 0.0000001),
|
|
|
// transformedTensorBernstein);
|
|
|
// transformedTensorBernstein);
|
|
|
bernstein::deCasteljau(tensorBernstein, |
|
|
bernstein::deCasteljau(tensorBernstein, uvector3(0.2690598923241497 + 0.0000001), |
|
|
uvector3(0.2690598923241497 + 0.0000001), |
|
|
uvector3(1 - 0.2690598923241497 - 0.0000001), transformedTensorBernstein); |
|
|
uvector3(1 - 0.2690598923241497 - 0.0000001), |
|
|
|
|
|
transformedTensorBernstein); |
|
|
|
|
|
uvector3 testX = uvector3(0.5); |
|
|
uvector3 testX = uvector3(0.5); |
|
|
|
|
|
|
|
|
int sign = bernstein::uniformSign(transformedTensorBernstein); |
|
|
int sign = bernstein::uniformSign(transformedTensorBernstein); |
|
@ -191,7 +170,7 @@ void testDeCasteljau() |
|
|
|
|
|
|
|
|
void testBlob() |
|
|
void testBlob() |
|
|
{ |
|
|
{ |
|
|
orgzer::Blob blob = {5, 3, 4, 5, 6}; |
|
|
organizer::Blob blob = {5, 3, 4, 5, 6}; |
|
|
|
|
|
|
|
|
// std::cout << blob.isPrimitive << std::endl;
|
|
|
// std::cout << blob.isPrimitive << std::endl;
|
|
|
// std::cout << blob.nodeOp << std::endl;
|
|
|
// std::cout << blob.nodeOp << std::endl;
|
|
|