%% Build Cpp MEX File with CGAL library dbstop if error opt_load = 0; if opt_load ==0 include1 = ['-I', 'C:\dev\vcpkg\installed\x64-windows\include']; include2 = ['-I', 'C:\dev\vcpkg\installed\x64-windows\include\eigen3']; include3 = ['-I', 'C:\dev\vcpkg\installed\x64-windows\lib\auxiliary\gmp\include']; include4 = ['-I', 'F:\project\7-current_opt\CVT-KWP\include\']; include5 = ['-I', 'C:\Program Files\OpenMesh 9.0\include']; include6 = ['-I', 'F:\library\libigl\include']; include7 = ['-I', 'F:\library\geogram-main\src\lib']; include8 = ['-I', 'F:\project\7-current_opt\CVT-KWP\3rd\TetWild\include']; % lib2 = ['-L', 'C:\dev\vcpkg\installed\x64-windows\lib\auxiliary\gmp\lib']; % lib21 = ['-l', 'libgmp-10.lib']; % lib22 = ['-l', 'libmpfr-4.lib']; lib2 = ['-L', 'C:\dev\vcpkg\installed\x64-windows\lib']; lib21 = ['-l', 'gmp.lib']; lib22 = ['-l', 'mpfr.lib']; lib1 = ['-L', 'C:\Program Files\OpenMesh 9.0\lib']; lib11 = ['-l', 'OpenMeshCore.lib']; lib12 = ['-l', 'OpenMeshTools.lib']; lib3 = ['-L', 'F:\library\geogram-main\build\lib\Release']; lib31 = ['-l', 'geogram.lib']; lib32 = ['-l', 'geogram_gfx.lib']; lib33 = ['-l', 'geogram_num_3rdparty.lib']; lib34 = ['-l', 'exploragram.lib']; mex('-v', include1, include2, include3, include4, include5, include6, include7, include8, ... lib2,lib21,lib2,lib22, lib1,lib11,lib1,lib12, 'mexVoronoi.cpp'); % mex('-v', include1, include3, lib2,lib21,lib2,lib22, 'mexVD.cpp'); % mex -v CXXFLAGS="$CXXFLAGS -Wall" ... % '-IC:\dev\vcpkg\installed\x64-windows\include' ... % '-IC:\dev\vcpkg\installed\x64-windows\lib\auxiliary\gmp\include' ... % '-LC:\dev\vcpkg\installed\x64-windows\lib\auxiliary\gmp\lib' ... % '-llibgmp-10.lib' '-llibmpfr-4.lib' ... % COMPFLAGS='$COMPFLAGS /openmp' ... % 'mexCVT.cpp'; end %% test info mexVoronoi(ones(3)) % load seeds % % figure % % % seeds(50,:) = seeds(50,:) + 3; % % seeds(1,1) = -130; % % [c_nodes, c_norms] = mexVD_info(seeds, int32(1:size(seeds,1))', 256,128,128); % % for i = 1:size(c_nodes, 1) % nodes = c_nodes{i}; % norms = c_norms{i}; % % nodes1 = nodes; % % nodes1 = merge_edges(nodes); % % figure(1); clf % x = nodes1(:,[1,4]); % y = nodes1(:,[2,5]); % z = nodes1(:,[3,6]); % plot3(x',y',z','LineWidth',2); hold on; % % cx = mean(nodes1(:, [1,4]), 2); % cy = mean(nodes1(:, [2,5]), 2); % cz = mean(nodes1(:, [3,6]), 2); % % quiver3(cx,cy,cz, norms(:,1), norms(:,2), norms(:,3)); hold on; % quiver3(cx,cy,cz, norms(:,4), norms(:,5), norms(:,6)); hold on; % end %% test cvt_nonregular % load seeds % figure % % % seeds(50,:) = seeds(50,:) + 3; % % seeds(1,1) = -130; % % [c_nodes, cenP] = mexVD(seeds, int32(1:size(seeds,1))', 256,128,128); % % for i = 1:size(c_nodes, 1) % nodes = c_nodes{i}; % % nodes1 = nodes; % % nodes1 = merge_edges(nodes); % % % figure(1); clf % x = nodes1(:,[1,4]); % y = nodes1(:,[2,5]); % z = nodes1(:,[3,6]); % plot3(x',y',z','LineWidth',2); hold on; % scatter3(cenP(i,1), cenP(i,2), cenP(i,3),'filled'); hold on; % end function new_segs = merge_edges(nodes) % figure; new_segs = []; len = size(nodes, 1); while len > 0 s1 = nodes(1, :); v1 = s1(4:6) - s1(1:3); nodes(1,:) = []; s11 = reshape(s1, 3, 2); found = 0; j = 1; len = size(nodes, 1); while j <= len s2 = nodes(j, :); v2 = s2(4:6) - s2(1:3); v3 = s1(1:3) - s2(1:3); s22 = reshape(s2, 3, 2); if norm(cross(v1, v2)) < 1e-5 && norm(cross(v3, v2)) < 1e-5 for ii = 1:2 for jj = 1:2 if abs(s11(1, ii) - s22(1,jj)) < 1e-5 && ... abs(s11(2, ii) - s22(2,jj)) < 1e-5 && ... abs(s11(3, ii) - s22(3,jj)) < 1e-5 && ~found tmp = [s11(:, 3-ii), s22(:, 3-jj)]; s1 = tmp(:)'; found = 1; nodes(j, :) = []; end end end end s11 = reshape(s1, 3, 2); len = size(nodes, 1); if found==1 j = 1; found = 0; else j = j+1; end end new_segs = [new_segs; s1]; % x = s1([1,4]); % y = s1(:,[2,5]); % z = s1(:,[3,6]); % plot3(x',y',z','LineWidth',2); hold on; len = size(nodes, 1); end end