From dc3a52f51f9443dd2c250d680ab257a02a6b06df Mon Sep 17 00:00:00 2001 From: gjj Date: Sat, 12 Oct 2024 18:53:52 +0800 Subject: [PATCH] halfplane blobtree --- CMakeLists.txt | 6 +++--- algoim/organizer/primitive.hpp | 5 ++++- gjj/primitiveDebug.hpp | 8 ++++---- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 531f6c4..d07bd8a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,9 +18,9 @@ endif() aux_source_directory(algoim algoim_SOURCES) -add_executable(algoim examples/examples_quad_multipoly.cpp ${algoim_SOURCES}) -target_include_directories(algoim PRIVATE ${LAPACKE_INCLUDE_DIR}) -target_link_libraries(algoim PRIVATE ${LAPACKE_LIB} ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) +# add_executable(algoim examples/examples_quad_multipoly.cpp ${algoim_SOURCES}) +# target_include_directories(algoim PRIVATE ${LAPACKE_INCLUDE_DIR}) +# target_link_libraries(algoim PRIVATE ${LAPACKE_LIB} ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) add_executable(loader examples/example_loader.cpp ${algoim_SOURCES}) target_include_directories(loader PRIVATE ${LAPACKE_INCLUDE_DIR}) diff --git a/algoim/organizer/primitive.hpp b/algoim/organizer/primitive.hpp index fb6d564..896163f 100644 --- a/algoim/organizer/primitive.hpp +++ b/algoim/organizer/primitive.hpp @@ -760,7 +760,7 @@ public: struct VisiblePrimitiveRep { std::vector tensors; - std::vector aabbs; + std::vector aabbs; AABB aabb; organizer::BlobTree subBlobTree; @@ -786,6 +786,9 @@ void makeHalfPlane(const HalfPlaneDesc& halfPlaneDesc, VisiblePrimitiveRep& visi tensor.m(uvector3(1, 0, 0)) = halfPlaneDesc.normal(0); tensor.m(uvector3(0, 1, 0)) = halfPlaneDesc.normal(1); tensor.m(uvector3(0, 0, 1)) = halfPlaneDesc.normal(2); + // subBlobTree + visiblePrimitive.subBlobTree.clear(); + buildNearBalancedBlobTree(visiblePrimitive.subBlobTree, 1); } void makeMesh(const MeshDesc& mesh, VisiblePrimitiveRep& visiblePrimitive) diff --git a/gjj/primitiveDebug.hpp b/gjj/primitiveDebug.hpp index 4cc0c72..e750a40 100644 --- a/gjj/primitiveDebug.hpp +++ b/gjj/primitiveDebug.hpp @@ -414,7 +414,7 @@ void testDeCasteljau() auto phiDesc = std::make_shared(SphereDesc(0.8, uvector3(0), 1.)); tensor3 tensor(nullptr, 3), tensor01(nullptr, 3), tensorBernstein(nullptr, 3), transformedTensorBernstein(nullptr, 3); algoim_spark_alloc(real, tensor, tensor01, tensorBernstein, transformedTensorBernstein); - VisiblePrimitiveRep visiblePrimitiveRep{{tensor}, AABB{}, BlobTree()}; + VisiblePrimitiveRep visiblePrimitiveRep{{tensor}, {}, AABB{}, BlobTree()}; makeSphere(*phiDesc, visiblePrimitiveRep); uvector3 xmax = 1, xmin = -1, range = xmax - xmin; organizer::detail::powerTransformation(range, xmin, tensor, tensor01); @@ -442,7 +442,7 @@ void testSubDivideWithDeCasteljau() auto phiDesc = std::make_shared(SphereDesc(0.7, uvector3(0.8), 1.)); tensor3 tensor(nullptr, 3), tensor01(nullptr, 3), tensorBernstein(nullptr, 3), transformedTensorBernstein(nullptr, 3); algoim_spark_alloc(real, tensor, tensor01, tensorBernstein, transformedTensorBernstein); - VisiblePrimitiveRep visiblePrimitiveRep{{tensor}, AABB{}, BlobTree()}; + VisiblePrimitiveRep visiblePrimitiveRep{{tensor}, {}, AABB{}, BlobTree()}; makeSphere(*phiDesc, visiblePrimitiveRep); uvector3 xmin = uvector3(-1., -1.3, -1.6), xmax = uvector3(1.6, 1.6, 2.3), range = xmax - xmin; organizer::detail::powerTransformation(range, xmin, tensor, tensor01); @@ -558,7 +558,7 @@ void testTensorInverse() tensor3 tensor(nullptr, 1 + faceCnt); algoimSparkAllocHeapVector(sparkStackPtrs, tensors); algoim_spark_alloc(real, tensor); - VisiblePrimitiveRep visiblePrimitiveRep{tensors, AABB(), organizer::BlobTree()}; + VisiblePrimitiveRep visiblePrimitiveRep{tensors, {}, AABB(), organizer::BlobTree()}; organizer::detail::compositePower(visiblePrimitiveRep.tensors, 0, 0, 1, tensor); makeMesh(*phiDesc, visiblePrimitiveRep); uvector3 testX(0.5, 0.7, 0.2); @@ -576,7 +576,7 @@ void testRotation() auto desc = std::make_shared(SphereDesc(0.1, uvector3(0, 0., 0.))); tensor3 power(nullptr, 3); algoim_spark_alloc(real, power); - VisiblePrimitiveRep visiblePrimitiveRep{{power}, AABB{}, BlobTree()}; + VisiblePrimitiveRep visiblePrimitiveRep{{power}, {}, AABB{}, BlobTree()}; makeSphere(*desc, visiblePrimitiveRep); uvector3 testX(0.5, 0.7, 0.2); real evalX = evalPower(power, testX);