資源簡介
通過一個以上的控制點,計算四參數(shù)轉(zhuǎn)換參數(shù),并利用轉(zhuǎn)換參數(shù)將其他測量點轉(zhuǎn)換成不同的坐標系下的坐標!

代碼片段和文件信息
#include
#include
#include
#include
#include
#include
void?det(double?**pdouble?**bdouble?**cint?n);????????????????//求逆函數(shù)
void?transform(double?**adouble?**bint?mint?n);??????//求轉(zhuǎn)置的函數(shù)
void?multiplication(double?**adouble?**bdouble?**cint?mint?sint?n);//矩陣相乘函數(shù)
void?add(double?**adouble?**bdouble?**abint?mint?nint?sign);//矩陣加、減函數(shù)
void?main()
{
int?ijNM;
double?**oldp**newp1;????????//舊坐標?新坐標觀測值?新坐標平差值
cout<<“請輸入公共點的個數(shù)\n“;
cin>>N;
cout<<“請輸入需要轉(zhuǎn)換的點的個數(shù)\n“;
cin>>M;
oldp=new?double*[N];??????????????????????//重合點在舊坐標系中的坐標
for(i=0;i oldp[i]=new?double[2];
newp1=new?double*[N];???????????????????//重合點的在新坐標系中的坐標
for(i=0;i newp1[i]=new?double[2];
double?**coneB;??????????????????????//系數(shù)矩陣B
coneB=new?double*[2*N];
for(i=0;i<2*N;i++)
coneB[i]=new?double[4];
double?**TconeB;??????????????????????//系數(shù)矩陣B的轉(zhuǎn)置
TconeB=new?double*[4];
for(i=0;i<4;i++)
TconeB[i]=new?double[2*N];
double?**consL;??????????????????//常數(shù)項矩陣L
consL=new?double*[2*N];
for(i=0;i<2*N;i++)
consL[i]=new?double[1];
double?**Nbb;?????????????????????//法方程系數(shù)矩陣Nbb
Nbb=new?double*[4];
for(i=0;i<4;i++)
Nbb[i]=new?double[4];
double?**DNbb;?????????????????//法方程系數(shù)矩陣Nbb的逆矩陣
DNbb=new?double*[4];
for(i=0;i<4;i++)
DNbb[i]=new?double[4];
double?**ENbb;?????????????????//法方程系數(shù)矩陣Nbb的擴展矩陣
ENbb=new?double*[4];
for(i=0;i<4;i++)
ENbb[i]=new?double[8];
double?**W;???????????????//用于表示Nbb*TconeB
W=new?double*[4];
for(i=0;i<4;i++)
W[i]=new?double[2*N];
double?**parameter;??????????????//平差參數(shù)
parameter=new?double*[4];
for(i=0;i<4;i++)
parameter[i]=new?double[1];
double?**V;??????????????????????//平差改正數(shù)
V=new?double*[2*N];
for(i=0;i<2*N;i++)
V[i]=new?double[1];
double?**result2;????????????????//用于存儲系數(shù)B與平差參數(shù)parameter的乘積
result2=new?double*[2*N];
for(i=0;i<2*N;i++)
result2[i]=new?double[1];
double?**oldpoint;???????????????????//用于存儲需要轉(zhuǎn)換的舊坐標
oldpoint=new?double*[M];?
for(i=0;i oldpoint[i]=new?double[2];
double?**newpoint;????????????????????//用于存儲舊坐標經(jīng)轉(zhuǎn)換后的新坐標
newpoint=new?double*[M];
for(i=0;i newpoint[i]=new?double[2];
//數(shù)據(jù)準備部分
ifstream?input;
input.open(“公共點的舊坐標.txt“);
for(i=0;i for(j=0;j<2;j++)
input>>oldp[i][j];
for(i=0;i<2*N;i++)????????????????????????//寫出方程系數(shù)矩陣B
for(j=0;j<4;j++)
{
coneB[i][0]=(0.5+pow(-1i)*0.5);
coneB[i][1]=(0.5-pow(-1i)*0.5);
coneB[i][2]=oldp[i/2][0]*(0.5+pow(-1i)*0.5)+oldp[i/2][1]*(0.5-pow(-1i)*0.5);
coneB[i][3]=oldp[i/2][0]*(0.5-pow(-1i)*0.5)+oldp[i/2][1]*(-0.5-pow(-1i)*0.5);
}
input.close();
input.open(“公共點的新坐標.txt“);??????????//讀入文本中的新坐標的觀測值
for(i=0;i for(j=0;j<2;j++)
input>>newp1[i][j];
for(i=0;i<2*N;i++)??????????????//寫出常數(shù)項矩陣L
for(j=0;j<1;j++)
consL[i][j]=newp1[i/2][0]*(0.5+pow(-1i)*0.5)+newp1[i/2][1]*
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????8627??2010-01-14?15:23??convert.cpp
-----------?---------??----------?-----??----
?????????????????8627????????????????????1
評論
共有 條評論