資源簡介
通過c語言完成攝影測量中的絕對(duì)定向功能,簡單易懂。

代碼片段和文件信息
#include
#include?
#define?N?6??//?控制點(diǎn)數(shù)量
#define?PI?3.1415926
#define?MAXITERARATION?8?//最大迭代次數(shù)
//////////////////////////////////////////////////////////////////////////
//矩陣變換處理相關(guān)函數(shù)
//////////////////////////////////////////////////////////////////////////
//矩陣變換處理相關(guān)函數(shù)
//?矩陣轉(zhuǎn)置
//?參數(shù)說明:原始矩陣MatrixOrigin為m×n
void?MatrixTranspose(double*?MatrixOrigin?double*?MatrixNew?int?m?int?n)
{
int?i;
int?j;
for?(i?=?0;?i?!=?n;?i?++)
{
for?(j?=?0;?j?!=?m;?j?++)
{
MatrixNew[i*m+j]?=?MatrixOrigin[j*n+i];
}
}
};
//////////////////////////////////////////////////////////////////////////
//?矩陣求逆
//?參數(shù)說明:m:原始矩陣Matrix的行/列數(shù)
void?MatrixInversion(double*?Matrix?int?m)
{
int?i?j?k;
????for(k?=?0;?k?!=?m;?k?++)
{
for(i?=?0;?i?!=?m;?i?++)
{
if(i?!=?k)
Matrix[i*m+k]?=?-?Matrix[i*m+k]?/?Matrix[k*m+k];
}
Matrix[k*m+k]?=?1?/?Matrix[k*m+k];
for(i?=?0;?i?!=?m;?i?++)
{
if(i?!=?k)
{
for(j?=?0;?j?!=?m;?j?++)
{
if(j?!=?k)
Matrix[i*m+j]?+=?Matrix[k*m+j]?*?Matrix[i*m+k];
}
}
}
for(j?=?0;?j?!=?m;?j?++)
{
if(j?!=?k)
Matrix[k*m+j]?*=?Matrix[k*m+k];
}
}
};
//////////////////////////////////////////////////////////////////////////
//?矩陣相乘
//?參數(shù)說明:C=A×B,ARow:A的行數(shù),AColumn:A的列數(shù),BColumn:B的列數(shù)
void?MatrixMultiply(double*?MatrixA?double*?MatrixB?double*?MatrixC?int?ARow?int?AColumn?int?BColumn)
{
int?i;
int?j;
int?k;
for(i?=?0;?i?!=?ARow;?i?++)
for(j=0;?j {
MatrixC[i*BColumn+j]?=?0.0;
????????????for(k?=?0;?k MatrixC[i*BColumn+j]?+=?MatrixA[i*AColumn+k]?*?MatrixB[j+k*BColumn];
}
};
//////////////////////////////////////////////////////////////////////////
//?矩陣相加?重載1
//?參數(shù)說明?
void?MatrixAdd(double*?MatrixA?double*?MatrixB?double*?MatrixC?int?Row?int?Column)
{
int?i;
int?j;
for?(i?=?0;?i?!=?Row;?i?++)
{
for?(j?=?0;?j?!=?Column;?j?++)
{
MatrixC[i*Column+j]?=?MatrixA[i*Column+j]?+?MatrixB[i*Column+j];
}
}
};
//?矩陣相加?重載2
//?A?+?B?=?C
//?
void?MatrixAdd(double*?MatrixA?double*?MatrixB?double*?MatrixC?int?length)
{
int?i;
for?(i?=?0;?i?!=?length;?i?++)
{
MatrixC[i]?=?MatrixA[i]?+?MatrixB[i];
}
};
//?矩陣相減,可做類似相加函數(shù)的重載
//?A?-?B?=?C
void?MatrixMinus(double*?MatrixA?double*?MatrixB?double*?MatrixC?int?length)
{
int?i;
for?(i?=?0;?i?!=?length;?i?++)
{
MatrixC[i]?=?MatrixA[i]?-?MatrixB[i];
}
};
//?矩陣復(fù)制
//?B?=?A
void?MatrixCopy(double*?MatrixA?double*?MatrixB?int?length)
{
int?i;
for?(i?=?0;?i?!=?length;?i?++)
{
MatrixB[i]?=?MatrixA[i];
}
};
/*檢查改正數(shù)是否已經(jīng)達(dá)到精度要求*/
int?CheckPrecision(double*?deta)
{
int?ret;
ret=(fabs(deta[0])<0.5&&fabs(deta[1])<0.5&&fabs(deta[2])<0.5&&
fabs(deta[4])<0.5/60*PI/180&&fabs(deta[5])<0.5/60*PI/180&&fabs(deta[6])<
0.5/60*PI/180);
return?ret;
}
struct?SourceData????//保存原始數(shù)據(jù)
{
double?x;
double?y;
double?z
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-06-12?10:53??絕對(duì)定向\
?????目錄???????????0??2012-06-12?10:53??絕對(duì)定向\176\
?????文件????????8944??2012-06-12?10:50??絕對(duì)定向\176\176.cpp
?????文件????????4248??2012-06-12?10:43??絕對(duì)定向\176\176.dsp
?????文件?????????529??2012-06-12?10:43??絕對(duì)定向\176\176.dsw
?????文件???????50176??2012-06-12?10:52??絕對(duì)定向\176\176.ncb
?????文件???????48640??2012-06-12?10:52??絕對(duì)定向\176\176.opt
?????文件?????????240??2012-06-12?10:52??絕對(duì)定向\176\176.plg
?????目錄???????????0??2012-06-12?10:53??絕對(duì)定向\176\Debug\
?????文件??????229451??2012-06-12?10:50??絕對(duì)定向\176\Debug\176.exe
?????文件??????230204??2012-06-12?10:50??絕對(duì)定向\176\Debug\176.ilk
?????文件???????24494??2012-06-12?10:50??絕對(duì)定向\176\Debug\176.obj
?????文件??????221684??2012-06-12?10:50??絕對(duì)定向\176\Debug\176.pch
?????文件??????517120??2012-06-12?10:50??絕對(duì)定向\176\Debug\176.pdb
?????文件???????41984??2012-06-12?10:52??絕對(duì)定向\176\Debug\vc60.idb
?????文件???????53248??2012-06-12?10:50??絕對(duì)定向\176\Debug\vc60.pdb
?????文件?????????516??2012-06-12?10:43??絕對(duì)定向\176\模型點(diǎn)-控制點(diǎn)-坐標(biāo).txt
評(píng)論
共有 條評(píng)論