資源簡介
已知插值點,反求控制點來擬合NURBS擬合。interpolate是Nurbs曲線擬合,conn_interpolate實現曲線順接還未完成,程序主體是CSDN下載b樣條擬合,在些基礎修改和完美。(無分確需要的可電郵:zglore#163.com)

代碼片段和文件信息
#include?“Bspline_fitting.h“
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
double?Bspline_fitting::OneBasicFuns(int?pint?mdouble?U[]int?idouble?u)
{
//?此函數算法見<>??P74
double?N[30];
double?savedtemp;
int?jk;
double?UleftUright;
if(?((i==0)?&&?(u==U[0]))?||?((i==m-p-1)?&&?(u==U[m]))?)?//special?case
{
return(1.0);
}
if(u=U[i+p+1])??//?local?property
{
return?(0);
}
for(j=0;j<=p;j++)?//?initialize?zero‘th?degree?functions
{
if(u>=U[i+j]?&&?u {
N[j]=1.0;??//Ni0=1.0
}
else
{
N[j]=0.0;
}
}
//computing?the?coefficients?by?de?boor‘s?algorithman?efficient?program
for(k=1;k<=p;k++)
{
if(N[0]==0.0)
{
saved=0.0;
}
else
{
saved=(u-U[i])*N[0]/(U[i+k]-U[i]);
//printf(“saved:\t%.9f\n“saved);
}
for(j=0;j {
Uleft=U[i+j+1];
Uright=U[i+j+k+1];
if(N[j+1]==0)
{
N[j]=saved;
saved=0.0;
}
else
{
temp=N[j+1]/(Uright-Uleft);
N[j]=saved+(Uright-u)*temp;
saved=(u-Uleft)*temp;
}
}
}
//an?easy?understunding?way?of?de?boor‘s?algorithm???;wrong?program!
/*for(k=1;k<=p;k++)
{
for(j=0;j {
if(N[j]==0.0)
saved?=?0.0;
else
saved?=?N[j]*(u-U[i])/(U[i+k]-U[i]);
if(N[j+1]?==?0.0)
temp?=?0.0;
else
temp?=?N[j+1]/(U[i+j+k+1]-U[i+j+1]);
printf(“savedtemp:\n%.9f%.9f“savedtemp);
N[j]?=?saved?+?temp*(U[i+j+k+1]-u);
}
}
*/
return(N[0]);
}
void?Bspline_fitting::matric_multiple(double?A[]double?B[]int?A1int?A2int?B1int?B2double?C[])
{
//?本程序計算矩陣C=A*B,A1,A2為B1,B2分別為矩陣A,B的行數和列數,其中A2必須與B1相等。
if(A2!=B1)
{
cout?<<“number?of?columns?of?matric?A?must?equal?to?the?number?of?ranks?of?matric?B“;
exit(0);
}
int?ijkq=0;
double?qq;
for(i=0;i {
for(k=0;k {
C[q]=0;
for(j=0;j {
C[q]=C[q]+A[i*A2+j]*B[j*B2+k];
qq=C[q];
}
q=q+1;
}
}
//?完畢
}
void?Bspline_fitting::matric_transpose(double?A[]int?A1int?A2double?C[])
{
//?本程序計算矩陣的轉置
int?ijk=0;
for(i=0;i {
for(j=0;j {
C[k]=A[i+j*A2];
k=k+1;
}
}
//完畢
}
void?Bspline_fitting::matric_plus(double?A[]double?B[]int?A1int?A2int?B1int?B2double?C[])
{
if(?(A1!=B1)||(A2!=B2))
{
cout?<“Errors:the?wrong?input?matrics?!“;
exit(0);
}
int?ijl=0;
for(i=0;i {
for(j=0;j {
C[l]=A[l]+B[l];
l=l+1;
}
}
}
void?Bspline_fitting::matric_minus(double?A[]double?B[]int?A1int?A2int?B1int?B2double?C[])
{
if(?(A1!=B1)||(A2!=B2))
{
cout?<“Errors:the?wrong?input?matrics?!“;
exit(0);
}
int?ijl=0;
for(i=0;i {
for(j=0;j {
C[l]=A[l]-B[l];
l=l+1;
}
}
}
void?Bspline_fitting::k_matr
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????16046??2010-08-13?17:32??Nurbs_fitting\Bspline_fitting.cpp
?????文件??????10181??2009-08-12?17:15??Nurbs_fitting\Bspline_fitting.cpp~RF1f39138.TMP
?????文件??????10177??2009-08-12?17:17??Nurbs_fitting\Bspline_fitting.cpp~RF1f61c77.TMP
?????文件??????15851??2010-08-13?16:29??Nurbs_fitting\Bspline_fitting.cpp~RF32f951.TMP
?????文件??????15877??2010-08-13?16:32??Nurbs_fitting\Bspline_fitting.cpp~RF423ab6.TMP
?????文件??????15899??2010-08-13?16:51??Nurbs_fitting\Bspline_fitting.cpp~RF463c29.TMP
?????文件??????15916??2010-08-13?16:54??Nurbs_fitting\Bspline_fitting.cpp~RF470ca8.TMP
?????文件??????10082??2009-08-11?15:59??Nurbs_fitting\Bspline_fitting.cpp~RF62a953.TMP
?????文件??????16046??2010-08-13?17:07??Nurbs_fitting\Bspline_fitting.cpp~RF66a0a4.TMP
?????文件??????10271??2009-08-11?17:18??Nurbs_fitting\Bspline_fitting.cpp~RFb74607.TMP
?????文件???????9854??2009-08-12?12:14??Nurbs_fitting\Bspline_fitting.cpp~RFdfea44.TMP
?????文件???????1194??2010-08-13?16:28??Nurbs_fitting\Bspline_fitting.h
?????文件????????724??2010-08-13?17:10??Nurbs_fitting\Bspline_main.cpp
?????文件????????638??2009-08-12?14:20??Nurbs_fitting\Bspline_main.cpp~RF167347b.TMP
?????文件???????3615??2009-01-04?09:19??Nurbs_fitting\Bspline_main.dsp
?????文件????????549??2009-01-04?09:19??Nurbs_fitting\Bspline_main.dsw
?????文件????1076224??2010-08-14?09:56??Nurbs_fitting\Bspline_main.ncb
?????文件??????48640??2009-01-04?09:19??Nurbs_fitting\Bspline_main.opt
?????文件???????1226??2009-01-04?08:56??Nurbs_fitting\Bspline_main.plg
?????文件????????888??2009-08-11?11:10??Nurbs_fitting\Bspline_main.sln
????..A..H.?????14336??2010-08-14?09:56??Nurbs_fitting\Bspline_main.suo
?????文件???????5306??2009-08-11?17:02??Nurbs_fitting\Bspline_main.vcproj
?????文件???????1427??2010-08-14?09:56??Nurbs_fitting\Bspline_main.vcproj.BAF1818988F64F9.Administrator.user
?????文件??????11010??2010-08-13?17:32??Nurbs_fitting\B_spline.txt
?????文件?????630131??2010-08-13?17:32??Nurbs_fitting\Debug\Bspline_fitting.obj
?????文件?????622378??2009-08-12?17:22??Nurbs_fitting\Debug\bspline_fitting.obj.enc
?????文件?????712704??2010-08-13?17:32??Nurbs_fitting\Debug\Bspline_main.exe
?????文件????????146??2010-08-13?17:01??Nurbs_fitting\Debug\Bspline_main.exe.em
?????文件????????212??2010-08-13?17:01??Nurbs_fitting\Debug\Bspline_main.exe.em
?????文件????????145??2010-08-13?17:32??Nurbs_fitting\Debug\Bspline_main.exe.intermediate.manifest
............此處省略14個文件信息
評論
共有 條評論