资源简介

通过一个以上的控制点,计算四参数转换参数,并利用转换参数将其他测量点转换成不同的坐标系下的坐标!

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#include
void det(double **pdouble **bdouble **cint n);                //求逆函数
void transform(double **adouble **bint mint n);      //求转置的函数
void multiplication(double **adouble **bdouble **cint mint sint n);//矩阵相乘函数
void add(double **adouble **bdouble **abint mint nint sign);//矩阵加、减函数
void main()
{
int ijNM;
double **oldp**newp1;        //旧坐标 新坐标观测值 新坐标平差值
cout<<“请输入公共点的个数\n“;
cin>>N;
cout<<“请输入需要转换的点的个数\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;                      //系数矩阵B
coneB=new double*[2*N];
for(i=0;i<2*N;i++)
coneB[i]=new double[4];
double **TconeB;                      //系数矩阵B的转置
TconeB=new double*[4];
for(i=0;i<4;i++)
TconeB[i]=new double[2*N];
double **consL;                  //常数项矩阵L
consL=new double*[2*N];
for(i=0;i<2*N;i++)
consL[i]=new double[1];
double **Nbb;                     //法方程系数矩阵Nbb
Nbb=new double*[4];
for(i=0;i<4;i++)
Nbb[i]=new double[4];
double **DNbb;                 //法方程系数矩阵Nbb的逆矩阵
DNbb=new double*[4];
for(i=0;i<4;i++)
DNbb[i]=new double[4];
double **ENbb;                 //法方程系数矩阵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;              //平差参数
parameter=new double*[4];
for(i=0;i<4;i++)
parameter[i]=new double[1];
double **V;                      //平差改正数
V=new double*[2*N];
for(i=0;i<2*N;i++)
V[i]=new double[1];
double **result2;                //用于存储系数B与平差参数parameter的乘积
result2=new double*[2*N];
for(i=0;i<2*N;i++)
result2[i]=new double[1];
double **oldpoint;                   //用于存储需要转换的旧坐标
oldpoint=new double*[M]; 
for(i=0;i oldpoint[i]=new double[2];
double **newpoint;                    //用于存储旧坐标经转换后的新坐标
newpoint=new double*[M];
for(i=0;i newpoint[i]=new double[2];



//数据准备部分
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++)                        //写出方程系数矩阵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++)              //写出常数项矩阵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


评论

共有 条评论