资源简介
利用Marching Cube算法对点云数据进行三维重建
代码片段和文件信息
#include “APSS.h“
#define SVD_T 0.0000001f
///////////////////////////////////////////////////////////////////////////////////////
float AlgebraicMLS::cacuValue(float g[3] float x float y float z) {
float value;
bool isNmin;
int *index_list listN;
float c[3];
float R = 1.0;
int i j;
int *flag;
c[0] = x;
c[1] = y;
c[2] = z;
isNmin = searchNeigh(index_listlistNcR);
float (*point)[3] = _ps->_point;
float (*normal)[3] = _ps->_normal;
double distmin;
int min_i;
int *newindex = new int[_Nmin];
if(isNmin==true) {
flag =new int[listN];
for(i=0; i for(i=0; i<_Nmin; i++) {
min = 1000;
for(j=0; j int in = index_list[j];
float *p = point[in]; //邻近点p;
dist = getDist(pc);
if(dist min = dist;
min_i = j;
}
}
flag[min_i] = 1;
newindex[i] = index_list[min_i];
}
value = computeDist(newindex_Nmincg);
}else {
flag =new int[listN];
for(i=0; i for(i=0; i<_Nmin; i++) {
min = 1000;
for(j=0; j int in = index_list[j];
float *p = point[in]; //邻近点p;
dist = getDist(pc);
if(dist min = dist;
min_i = j;
}
}
flag[min_i] = 1;
newindex[i] = index_list[min_i];
}
value = computeDist(newindex_Nmincg);
}
return value;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool AlgebraicMLS::searchNeigh(int* &index_listint &listNfloat c[3] float R) { //搜索邻近点;
bool isNmin;
float R1 = R;
_tree->collectPointIndexInSphere(index_list listN c R1);//kd树搜索邻近点;
if(listN < _Nmin) {
isNmin = false;
while(true) {
R1 += R * this->_lambda;
_tree->collectPointIndexInSphere(index_list listN c R1);
if(listN >= _Nmin) break;
}
}else {
isNmin = true;
}
return isNmin;
}
//////////////////////////////////////////////////////////////////////////////////////////
double AlgebraicMLS::getDist(float c1[3] float c2[3]) {
double dist dist_x dist_y dist_z;
dist_x = (double)c1[0] - (double)c2[0];
dist_y = (double)c1[1] - (double)c2[1];
dist_z = (double)c1[2] - (double)c2[2];
dist = sqrt(dist_x*dist_x + dist_y*dist_y + dist_z*dist_z);
return dist;
}
//////////////////////////////////////////////////////////////////////////////////////////////
double AlgebraicMLS::getWeight(float c1[3] float c2[3]) { //权重值;
double dist = getDist(c1c2);
dist = dist * 2.5;
double weight = (1-dist*dist)*(1-dist*dist);
return weight;
}
////////////////////////////////////////////////////////////////////////////////////////////////
float AlgebraicMLS::computeDist(int* &index_listint &listNfloat c[3]float g[3]) {//计算距离;
float value;
int i;
double total_w;
double w;
float dist;
g[0] = g[1] = g[2] = 0;
float (*point)[3] = _ps->_point;
float (*
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4988 2013-06-24 13:35 MarchingCube\Algebraic MLS.dsp
文件 534 2013-06-22 19:44 MarchingCube\Algebraic MLS.dsw
文件 123904 2013-09-28 18:48 MarchingCube\Algebraic MLS.ncb
文件 48640 2013-09-28 18:48 MarchingCube\Algebraic MLS.opt
文件 1471 2013-06-25 17:23 MarchingCube\Algebraic MLS.plg
文件 28200960 2016-07-26 20:59 MarchingCube\Algebraic MLS.sdf
文件 892 2016-07-25 09:55 MarchingCube\Algebraic MLS.sln
..A..H. 18944 2016-07-26 20:59 MarchingCube\Algebraic MLS.suo
文件 6601 2016-07-25 09:54 MarchingCube\Algebraic MLS.vcxproj
文件 1866 2016-07-25 09:54 MarchingCube\Algebraic MLS.vcxproj.filters
文件 143 2016-07-25 09:54 MarchingCube\Algebraic MLS.vcxproj.user
文件 3493 2016-07-25 09:58 MarchingCube\APSS.cpp
文件 984 2016-07-25 10:01 MarchingCube\APSS.h
文件 2196981 2013-06-04 15:56 MarchingCube\data\bunny.txt
文件 5709603 2013-06-16 21:26 MarchingCube\data\dragon.txt
文件 1969 2016-07-25 09:56 MarchingCube\Debug\Algebraic MLS.Build.CppClean.log
文件 555520 2016-07-25 14:49 MarchingCube\Debug\Algebraic MLS.exe
文件 406 2016-07-25 09:56 MarchingCube\Debug\Algebraic MLS.exe.em
文件 472 2016-07-25 09:56 MarchingCube\Debug\Algebraic MLS.exe.em
文件 381 2016-07-25 14:49 MarchingCube\Debug\Algebraic MLS.exe.intermediate.manifest
文件 1367256 2016-07-25 14:49 MarchingCube\Debug\Algebraic MLS.ilk
文件 53 2016-07-25 14:49 MarchingCube\Debug\Algebraic MLS.lastbuildstate
文件 5864 2016-07-25 14:49 MarchingCube\Debug\Algebraic MLS.log
文件 2583552 2016-07-25 14:49 MarchingCube\Debug\Algebraic MLS.pdb
文件 620 2013-06-23 16:42 MarchingCube\Debug\Algebraic MLS.sln
..A..H. 8704 2013-06-23 16:42 MarchingCube\Debug\Algebraic MLS.suo
文件 713 2016-07-25 14:49 MarchingCube\Debug\Algebraic MLS.vcxprojResolveAssemblyReference.cache
文件 0 2016-07-25 09:56 MarchingCube\Debug\Algebraic MLS.write.1.tlog
文件 222 2016-07-25 09:56 MarchingCube\Debug\Algebraic MLS_manifest.rc
文件 53377 2016-07-25 14:49 MarchingCube\Debug\APSS.obj
............此处省略47个文件信息
评论
共有 条评论