资源简介

利用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.embed.manifest

     文件        472  2016-07-25 09:56  MarchingCube\Debug\Algebraic MLS.exe.embed.manifest.res

     文件        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个文件信息

评论

共有 条评论