From 9230936ab47e9f3d0dbf0e732d3c57fa44bca059 Mon Sep 17 00:00:00 2001 From: mkazhdan Date: Fri, 19 Jul 2019 00:25:18 -0400 Subject: [PATCH] Version 12.00: Added functionality to fit a function to set of sample values (PointInterpolant) Added functionality to sample a function at prescribed locations (AdaptiveTreeVisualization) --- AdaptiveSolvers.sln | 73 +++ Makefile | 16 + PointInterpolant.vcxproj | 167 ++++++ README.md | 145 +++++- Src/AdaptiveTreeVisualization.cpp | 65 ++- Src/EDTInHeat.cpp | 2 +- Src/FEMTree.WeightedSamples.inl | 2 +- Src/FEMTree.h | 14 +- Src/FEMTree.inl | 93 ++-- Src/Image.h | 2 +- Src/Ply.h | 6 +- Src/PlyFile.h | 6 +- Src/PointInterpolant.cpp | 820 ++++++++++++++++++++++++++++++ Src/PointStream.inl | 4 +- Src/PointStreamData.h | 6 +- Src/PoissonRecon.cpp | 28 +- Src/PreProcessor.h | 2 +- Src/SSDRecon.cpp | 27 +- Src/SparseMatrix.h | 6 +- 19 files changed, 1391 insertions(+), 93 deletions(-) create mode 100644 PointInterpolant.vcxproj create mode 100644 Src/PointInterpolant.cpp diff --git a/AdaptiveSolvers.sln b/AdaptiveSolvers.sln index 26b9c71..b696e93 100644 --- a/AdaptiveSolvers.sln +++ b/AdaptiveSolvers.sln @@ -102,32 +102,105 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Inline Files", "Inline File EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ChunkPLY", "ChunkPLY.vcxproj", "{95B998F8-A73B-40AB-AF35-C38F2CB89480}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PointInterpolant", "PointInterpolant.vcxproj", "{D5516BBE-9613-4AE3-BE4D-E754995F944C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 Release|x64 = Release|x64 + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D3D173AB-D306-4179-BEC4-95CE1B14E647}.Debug|x64.ActiveCfg = Debug|x64 + {D3D173AB-D306-4179-BEC4-95CE1B14E647}.Debug|x64.Build.0 = Debug|x64 + {D3D173AB-D306-4179-BEC4-95CE1B14E647}.Debug|x86.ActiveCfg = Debug|Win32 + {D3D173AB-D306-4179-BEC4-95CE1B14E647}.Debug|x86.Build.0 = Debug|Win32 {D3D173AB-D306-4179-BEC4-95CE1B14E647}.Release|x64.ActiveCfg = Release|x64 {D3D173AB-D306-4179-BEC4-95CE1B14E647}.Release|x64.Build.0 = Release|x64 + {D3D173AB-D306-4179-BEC4-95CE1B14E647}.Release|x86.ActiveCfg = Release|Win32 + {D3D173AB-D306-4179-BEC4-95CE1B14E647}.Release|x86.Build.0 = Release|Win32 + {477765F8-C16A-406B-807F-1302DAE74EBA}.Debug|x64.ActiveCfg = Debug|x64 + {477765F8-C16A-406B-807F-1302DAE74EBA}.Debug|x64.Build.0 = Debug|x64 + {477765F8-C16A-406B-807F-1302DAE74EBA}.Debug|x86.ActiveCfg = Debug|Win32 + {477765F8-C16A-406B-807F-1302DAE74EBA}.Debug|x86.Build.0 = Debug|Win32 {477765F8-C16A-406B-807F-1302DAE74EBA}.Release|x64.ActiveCfg = Release|x64 {477765F8-C16A-406B-807F-1302DAE74EBA}.Release|x64.Build.0 = Release|x64 + {477765F8-C16A-406B-807F-1302DAE74EBA}.Release|x86.ActiveCfg = Release|Win32 + {477765F8-C16A-406B-807F-1302DAE74EBA}.Release|x86.Build.0 = Release|Win32 + {B5899B32-FAC2-477E-99AA-86736B97F2FC}.Debug|x64.ActiveCfg = Debug|x64 + {B5899B32-FAC2-477E-99AA-86736B97F2FC}.Debug|x64.Build.0 = Debug|x64 + {B5899B32-FAC2-477E-99AA-86736B97F2FC}.Debug|x86.ActiveCfg = Debug|Win32 + {B5899B32-FAC2-477E-99AA-86736B97F2FC}.Debug|x86.Build.0 = Debug|Win32 {B5899B32-FAC2-477E-99AA-86736B97F2FC}.Release|x64.ActiveCfg = Release|x64 {B5899B32-FAC2-477E-99AA-86736B97F2FC}.Release|x64.Build.0 = Release|x64 + {B5899B32-FAC2-477E-99AA-86736B97F2FC}.Release|x86.ActiveCfg = Release|Win32 + {B5899B32-FAC2-477E-99AA-86736B97F2FC}.Release|x86.Build.0 = Release|Win32 + {0BE55595-4080-4265-82AF-51108EC956B2}.Debug|x64.ActiveCfg = Debug|x64 + {0BE55595-4080-4265-82AF-51108EC956B2}.Debug|x64.Build.0 = Debug|x64 + {0BE55595-4080-4265-82AF-51108EC956B2}.Debug|x86.ActiveCfg = Debug|Win32 + {0BE55595-4080-4265-82AF-51108EC956B2}.Debug|x86.Build.0 = Debug|Win32 {0BE55595-4080-4265-82AF-51108EC956B2}.Release|x64.ActiveCfg = Release|x64 {0BE55595-4080-4265-82AF-51108EC956B2}.Release|x64.Build.0 = Release|x64 + {0BE55595-4080-4265-82AF-51108EC956B2}.Release|x86.ActiveCfg = Release|Win32 + {0BE55595-4080-4265-82AF-51108EC956B2}.Release|x86.Build.0 = Release|Win32 + {E09D1615-1036-4F43-909A-2E751FC947F6}.Debug|x64.ActiveCfg = Debug|x64 + {E09D1615-1036-4F43-909A-2E751FC947F6}.Debug|x64.Build.0 = Debug|x64 + {E09D1615-1036-4F43-909A-2E751FC947F6}.Debug|x86.ActiveCfg = Debug|Win32 + {E09D1615-1036-4F43-909A-2E751FC947F6}.Debug|x86.Build.0 = Debug|Win32 {E09D1615-1036-4F43-909A-2E751FC947F6}.Release|x64.ActiveCfg = Release|x64 {E09D1615-1036-4F43-909A-2E751FC947F6}.Release|x64.Build.0 = Release|x64 + {E09D1615-1036-4F43-909A-2E751FC947F6}.Release|x86.ActiveCfg = Release|Win32 + {E09D1615-1036-4F43-909A-2E751FC947F6}.Release|x86.Build.0 = Release|Win32 + {3B94F9AD-35E8-4E1E-B176-AAA091E4C3CC}.Debug|x64.ActiveCfg = Debug|x64 + {3B94F9AD-35E8-4E1E-B176-AAA091E4C3CC}.Debug|x64.Build.0 = Debug|x64 + {3B94F9AD-35E8-4E1E-B176-AAA091E4C3CC}.Debug|x86.ActiveCfg = Debug|Win32 + {3B94F9AD-35E8-4E1E-B176-AAA091E4C3CC}.Debug|x86.Build.0 = Debug|Win32 {3B94F9AD-35E8-4E1E-B176-AAA091E4C3CC}.Release|x64.ActiveCfg = Release|x64 {3B94F9AD-35E8-4E1E-B176-AAA091E4C3CC}.Release|x64.Build.0 = Release|x64 {3B94F9AD-35E8-4E1E-B176-AAA091E4C3CC}.Release|x64.Deploy.0 = Release|x64 + {3B94F9AD-35E8-4E1E-B176-AAA091E4C3CC}.Release|x86.ActiveCfg = Release|Win32 + {3B94F9AD-35E8-4E1E-B176-AAA091E4C3CC}.Release|x86.Build.0 = Release|Win32 + {99BEAFED-8DB9-4B7D-A0BE-5186158193FE}.Debug|x64.ActiveCfg = Debug|x64 + {99BEAFED-8DB9-4B7D-A0BE-5186158193FE}.Debug|x64.Build.0 = Debug|x64 + {99BEAFED-8DB9-4B7D-A0BE-5186158193FE}.Debug|x86.ActiveCfg = Debug|Win32 + {99BEAFED-8DB9-4B7D-A0BE-5186158193FE}.Debug|x86.Build.0 = Debug|Win32 {99BEAFED-8DB9-4B7D-A0BE-5186158193FE}.Release|x64.ActiveCfg = Release|x64 {99BEAFED-8DB9-4B7D-A0BE-5186158193FE}.Release|x64.Build.0 = Release|x64 + {99BEAFED-8DB9-4B7D-A0BE-5186158193FE}.Release|x86.ActiveCfg = Release|Win32 + {99BEAFED-8DB9-4B7D-A0BE-5186158193FE}.Release|x86.Build.0 = Release|Win32 + {46F87D0E-C53A-4F95-AB48-A5DBA8014340}.Debug|x64.ActiveCfg = Debug|x64 + {46F87D0E-C53A-4F95-AB48-A5DBA8014340}.Debug|x64.Build.0 = Debug|x64 + {46F87D0E-C53A-4F95-AB48-A5DBA8014340}.Debug|x86.ActiveCfg = Debug|Win32 + {46F87D0E-C53A-4F95-AB48-A5DBA8014340}.Debug|x86.Build.0 = Debug|Win32 {46F87D0E-C53A-4F95-AB48-A5DBA8014340}.Release|x64.ActiveCfg = Release|x64 {46F87D0E-C53A-4F95-AB48-A5DBA8014340}.Release|x64.Build.0 = Release|x64 + {46F87D0E-C53A-4F95-AB48-A5DBA8014340}.Release|x86.ActiveCfg = Release|Win32 + {46F87D0E-C53A-4F95-AB48-A5DBA8014340}.Release|x86.Build.0 = Release|Win32 + {742064B3-CEBB-4AF8-B43C-D213EB1C6D7A}.Debug|x64.ActiveCfg = Debug|x64 + {742064B3-CEBB-4AF8-B43C-D213EB1C6D7A}.Debug|x64.Build.0 = Debug|x64 + {742064B3-CEBB-4AF8-B43C-D213EB1C6D7A}.Debug|x86.ActiveCfg = Debug|Win32 + {742064B3-CEBB-4AF8-B43C-D213EB1C6D7A}.Debug|x86.Build.0 = Debug|Win32 {742064B3-CEBB-4AF8-B43C-D213EB1C6D7A}.Release|x64.ActiveCfg = Release|x64 {742064B3-CEBB-4AF8-B43C-D213EB1C6D7A}.Release|x64.Build.0 = Release|x64 + {742064B3-CEBB-4AF8-B43C-D213EB1C6D7A}.Release|x86.ActiveCfg = Release|Win32 + {742064B3-CEBB-4AF8-B43C-D213EB1C6D7A}.Release|x86.Build.0 = Release|Win32 + {95B998F8-A73B-40AB-AF35-C38F2CB89480}.Debug|x64.ActiveCfg = Debug|x64 + {95B998F8-A73B-40AB-AF35-C38F2CB89480}.Debug|x64.Build.0 = Debug|x64 + {95B998F8-A73B-40AB-AF35-C38F2CB89480}.Debug|x86.ActiveCfg = Debug|Win32 + {95B998F8-A73B-40AB-AF35-C38F2CB89480}.Debug|x86.Build.0 = Debug|Win32 {95B998F8-A73B-40AB-AF35-C38F2CB89480}.Release|x64.ActiveCfg = Release|x64 {95B998F8-A73B-40AB-AF35-C38F2CB89480}.Release|x64.Build.0 = Release|x64 + {95B998F8-A73B-40AB-AF35-C38F2CB89480}.Release|x86.ActiveCfg = Release|Win32 + {95B998F8-A73B-40AB-AF35-C38F2CB89480}.Release|x86.Build.0 = Release|Win32 + {D5516BBE-9613-4AE3-BE4D-E754995F944C}.Debug|x64.ActiveCfg = Debug|x64 + {D5516BBE-9613-4AE3-BE4D-E754995F944C}.Debug|x64.Build.0 = Debug|x64 + {D5516BBE-9613-4AE3-BE4D-E754995F944C}.Debug|x86.ActiveCfg = Debug|Win32 + {D5516BBE-9613-4AE3-BE4D-E754995F944C}.Debug|x86.Build.0 = Debug|Win32 + {D5516BBE-9613-4AE3-BE4D-E754995F944C}.Release|x64.ActiveCfg = Release|x64 + {D5516BBE-9613-4AE3-BE4D-E754995F944C}.Release|x64.Build.0 = Release|x64 + {D5516BBE-9613-4AE3-BE4D-E754995F944C}.Release|x86.ActiveCfg = Release|Win32 + {D5516BBE-9613-4AE3-BE4D-E754995F944C}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Makefile b/Makefile index 839ebd8..00464dd 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ PR_TARGET=PoissonRecon SR_TARGET=SSDRecon +PI_TARGET=PointInterpolant ST_TARGET=SurfaceTrimmer EH_TARGET=EDTInHeat IS_TARGET=ImageStitching @@ -7,6 +8,7 @@ AV_TARGET=AdaptiveTreeVisualization CP_TARGET=ChunkPLY PR_SOURCE=PoissonRecon.cpp SR_SOURCE=SSDRecon.cpp +PI_SOURCE=PointInterpolant.cpp ST_SOURCE=SurfaceTrimmer.cpp EH_SOURCE=EDTInHeat.cpp IS_SOURCE=ImageStitching.cpp @@ -54,6 +56,7 @@ MD=mkdir PR_OBJECTS=$(addprefix $(BIN), $(addsuffix .o, $(basename $(PR_SOURCE)))) SR_OBJECTS=$(addprefix $(BIN), $(addsuffix .o, $(basename $(SR_SOURCE)))) +PI_OBJECTS=$(addprefix $(BIN), $(addsuffix .o, $(basename $(PI_SOURCE)))) ST_OBJECTS=$(addprefix $(BIN), $(addsuffix .o, $(basename $(ST_SOURCE)))) EH_OBJECTS=$(addprefix $(BIN), $(addsuffix .o, $(basename $(EH_SOURCE)))) IS_OBJECTS=$(addprefix $(BIN), $(addsuffix .o, $(basename $(IS_SOURCE)))) @@ -66,6 +69,7 @@ all: LFLAGS += $(LFLAGS_RELEASE) all: make_dir all: $(BIN)$(PR_TARGET) all: $(BIN)$(SR_TARGET) +all: $(BIN)$(PI_TARGET) all: $(BIN)$(ST_TARGET) all: $(BIN)$(EH_TARGET) all: $(BIN)$(IS_TARGET) @@ -77,6 +81,7 @@ debug: LFLAGS += $(LFLAGS_DEBUG) debug: make_dir debug: $(BIN)$(PR_TARGET) debug: $(BIN)$(SR_TARGET) +debug: $(BIN)$(PI_TARGET) debug: $(BIN)$(ST_TARGET) debug: $(BIN)$(EH_TARGET) debug: $(BIN)$(IS_TARGET) @@ -93,6 +98,11 @@ ssdrecon: LFLAGS += $(LFLAGS_RELEASE) ssdrecon: make_dir ssdrecon: $(BIN)$(SR_TARGET) +pointinterpolant: CFLAGS += $(CFLAGS_RELEASE) +pointinterpolant: LFLAGS += $(LFLAGS_RELEASE) +pointinterpolant: make_dir +pointinterpolant: $(BIN)$(PI_TARGET) + surfacetrimmer: CFLAGS += $(CFLAGS_RELEASE) surfacetrimmer: LFLAGS += $(LFLAGS_RELEASE) surfacetrimmer: make_dir @@ -121,6 +131,7 @@ chunkply: $(BIN)$(CP_TARGET) clean: rm -rf $(BIN)$(PR_TARGET) rm -rf $(BIN)$(SR_TARGET) + rm -rf $(BIN)$(PI_TARGET) rm -rf $(BIN)$(ST_TARGET) rm -rf $(BIN)$(EH_TARGET) rm -rf $(BIN)$(IS_TARGET) @@ -128,6 +139,7 @@ clean: rm -rf $(BIN)$(CP_TARGET) rm -rf $(PR_OBJECTS) rm -rf $(SR_OBJECTS) + rm -rf $(PI_OBJECTS) rm -rf $(ST_OBJECTS) rm -rf $(EH_OBJECTS) rm -rf $(IS_OBJECTS) @@ -147,6 +159,10 @@ $(BIN)$(SR_TARGET): $(SR_OBJECTS) cd PNG && make $(CXX) -o $@ $(SR_OBJECTS) -L$(BIN) $(LFLAGS) -ljpeg -lmypng -lz +$(BIN)$(PI_TARGET): $(PI_OBJECTS) + cd PNG && make + $(CXX) -o $@ $(PI_OBJECTS) -L$(BIN) $(LFLAGS) -ljpeg -lmypng -lz + $(BIN)$(ST_TARGET): $(ST_OBJECTS) $(CXX) -o $@ $(ST_OBJECTS) $(LFLAGS) diff --git a/PointInterpolant.vcxproj b/PointInterpolant.vcxproj new file mode 100644 index 0000000..b4da247 --- /dev/null +++ b/PointInterpolant.vcxproj @@ -0,0 +1,167 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + + + + 15.0 + {D5516BBE-9613-4AE3-BE4D-E754995F944C} + Win32Proj + PointInterpolant + 10.0.17763.0 + PointInterpolant + + + + Application + true + v141 + Unicode + + + Application + false + v141 + true + Unicode + + + Application + true + v141 + Unicode + + + Application + false + v141 + true + MultiByte + + + + + + + + + + + + + + + + + + + + + false + $(SolutionDir)\Bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\Obj\$(TargetName)\$(Platform)\$(Configuration)\ + + + true + + + true + + + false + + + + NotUsing + Level3 + MaxSpeed + true + true + true + NOMINMAX;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + false + pch.h + .;%(AdditionalIncludeDirectories) + AdvancedVectorExtensions2 + true + + + Console + true + true + true + $(OutDir) + ZLIB.lib;JPEG.lib;PNG.lib;psapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + Use + Level3 + Disabled + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + pch.h + + + Console + true + + + + + Use + Level3 + Disabled + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + pch.h + + + Console + true + + + + + Use + Level3 + MaxSpeed + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + pch.h + + + Console + true + true + true + + + + + + \ No newline at end of file diff --git a/README.md b/README.md index 05b0626..f31b85b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -

Adaptive Multigrid Solvers (Version 11.02)

+

Adaptive Multigrid Solvers (Version 12.00)

links executables @@ -27,10 +27,11 @@ This code-base was born from the Poisson Surface Reconstruction code. It has evo [Kazhdan and Hoppe, 2013]
Executables: -Win64
+Win64
Source Code: -ZIP GitHub
+ZIP GitHub
Older Versions: +V11.02, V11.01, V11.00, V10.07, @@ -336,6 +337,103 @@ individual components of the surface reconstructor. + + + +