資源簡介
利用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? 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個文件信息
評論
共有 條評論