資源簡介
高斯曲率和平均曲率的代碼,用matlab寫的

代碼片段和文件信息
function??[KH]=Point_Curvature(datapartial_data)
%此函數(shù)的功能是模型上的部分點(diǎn)的曲率
%data????為模型上所有的點(diǎn)
%partial_data????為模型上的部分點(diǎn)(特征點(diǎn)或匹配候選點(diǎn))
[ProwPcol]=size(partial_data);
[rowcol]=size(data);
for?i=1:Prow
????
????distance=[];
????for?j=1:row?????
???????distance(j)=sqEuclidean_distance(partial_data(i:)data(j:));????????
????end
??
????[sortdisx]=sort(distance);
????mindis_five(1:5)=sortdis(2:6);
%計(jì)算最小5個(gè)距離的點(diǎn)的標(biāo)號(hào),存放于?矩陣mindis_label
????mindis_label(1:5i)=x(2:6);
????
%coef存放所有點(diǎn)的方程的系數(shù)
????for?j=1:5
????????x=data(mindis_label(ji)1);
????????y=data(mindis_label(ji)2);
????????z=data(mindis_label(ji)3);
????????coef(5*(i-1)+j1:6)=[x^2?2*x*y?y^2?x?y?z];??
????end?
????
%?A存放的是第i個(gè)點(diǎn)的方程的系數(shù)
????A=[];
????A=[coef(5*(i-1)+1:);coef(5*(i-1)+2:);coef(5*(i-1)+3:);coef(5*(i-1)+4:);coef(5*(i-1)+5:)];
????
%?用高斯消元法解系數(shù)方程組
????Adet(i)=det(A(:1:5));
????[LU]=lu(A(:1:5));
????coef_value(1:5i)=U\(L\A(:6));
????a=coef_value(1i);
????b=coef_value(2i);
????c=coef_value(3i);
????d=coef_value(4i);
????e=coef_value(5i);
????K(i)=4*(a*c-b^2)/(1+d^2+e^2)^2;
????H(i)=(a+c+a*e^2+c*d^2-2*b*d*e)/(1+d^2+e^2)^(3/2);????
%%
??function????distance?=?sqEuclidean_distance(fistlast)
distance?=?norm(fist?-?last);
??end
??
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????1375??2010-12-23?21:42??Point_Curvature.m
-----------?---------??----------?-----??----
?????????????????1375????????????????????1
評(píng)論
共有 條評(píng)論