绝对定向作业报告.doc
《绝对定向作业报告.doc》由会员分享,可在线阅读,更多相关《绝对定向作业报告.doc(13页珍藏版)》请在冰豆网上搜索。
![绝对定向作业报告.doc](https://file1.bdocx.com/fileroot1/2022-10/19/46df5984-b151-4763-92e0-d43a57d5e771/46df5984-b151-4763-92e0-d43a57d5e7711.gif)
绝对定向作业报告
1作业任务------------------------------------------------------------------------------------ 3
2作业原理--------------------------------------------------------------------------------------- 3
3已知条件及数据-------------------------------------------------------------------- 3
4作业过程--------------------------------------------------------------------------- 3
5源程序----------------------------------------------------------------------------- 4
6计算结果---------------------------------------------------------------------------10
7心得体会与建议-----------------------------------------------------------------------------10
1作业任务
在上次作业(相对定向)的基础上,继续完成以下编程任务:
1)计算出6个定向点的模型坐标、摄影测量坐标(航摄比例尺为1:
37000);
2)采用如下绝对定向元素:
l=1.00156,ψ=0.0527,ω=0.1426,κ=0.2478,X0=6385.067,Y0=1954.325,Z0=724.215,计算出各点的地面摄影测量坐标;
3)根据地面摄影坐标和模型点的摄影坐标,编程实现绝对定向,计算出绝对定向元素和各点的地面摄影测量坐标。
2作业原理
解析法绝对定向:
利用已知的地面控制点,从绝对定向的关系式出发,解求绝对定向元素。
实际上,绝对定向德主要工作室把模型点的摄影测量坐标变换为地面摄影测量坐标。
空间相似变换:
个立体像对有12个外方位元素,经相对定向求得五个定向元素后,要恢复像对的绝对方位,还要求解7个绝对定向元素,包括模型的旋转、平移和缩放。
这种坐标变换前后图形的几何形状相似,称为空间相似变换。
设任一模型点的摄影测量坐标为(U,V,W),对应的地面摄影测量坐标为(X,Y,Z),它们之间的空间相似变换可以用绝对定向的基本关系式(下式)表示,即
=λ+
式中:
λ为缩放系数;ai,bi,ci为由角元素ψ,ω,κ的函数组成的方向余弦;Xs,Ys,Zs为坐标原点的平移量。
解析绝对定向就是根据控制点的地面摄影测量坐标和对应的模型坐标(摄测坐标),解算出ψ,ω,κ,Xs,Ys,Zs和λ共7个绝对定向参数,再用算得的7个参数,把待定点的摄影测量坐标换算为地面摄影测量坐标。
本次作业为先利用给定绝对定向元素求出坐标条件,再以求得的坐标条件为已知条件,又求绝对定向元素,与所给值作对比,并求出地面摄影测量坐标的改正值。
3已知条件及数据
采用如下绝对定向元素:
l=1.00156,ψ=0.0527,ω=0.1426,κ=0.2478,X0=6385.067,Y0=1954.325,Z0=724.215,计算出各点的地面摄影测量坐标后,又以求得的地面摄影测量坐标和根据上次作业解算的模型点摄影测量坐标为已知条件,代入绝对定向的基本关系式。
4作业过程
4.1模型点坐标计算
根据上次相对定向作业,正确求解出相对定向元素后,利用空间前方交会共识计算出模型点的坐标。
任一模型点坐标:
4.2求模型点的摄影测量坐标:
为了后续计算,把上步求得坐标平移到摄影测量坐标系中,同时放大模型比例尺,使之接近实地大小。
4.3根据所给绝对定向元素重新计算旋转矩阵R,以及上述坐标共同代入绝对定向基本关系式,求解各点的地面摄影测量坐标(X,Y,Z)。
4.4将所求得得各点的地面摄影测量坐标和模型点的摄影测量坐标作为已知条件,绝对定向元素视为未知,进行绝对定向。
4.5确定相对定向元素的初始值;
ψ0=ω0=κ0=0,Xs0=Ys0=Zs0=0,λ0=1
4.6根据确定的初始值(或新的近似值),计算出误差方程式的常数项。
4.7逐点组成误差方程并法化,逐点法化。
4.8解求法方程,得七个绝对定向元素的改正数。
4.8计算绝对定向元素的新值。
4.9判断绝对定向元素的改正数是否小于限值0.00003rad,如满足条件,则结束相对定向计算。
否则重复4.5~4.9。
4.10根据求得的绝对定向元素,将所有模型点的摄测坐标转换为地面摄测坐标。
5源程序
#include
#include
#include
#include
#include
constintN=7;
inti,j,k;
doubleb,x[6][3],y[6][3],z[6][3]={0};//x[6][3]和y[6][3]分别为左右片像点像空间坐标,z[6][3]为右片各点像空间辅助坐标
//求转置矩阵
templatevoidTranspose(T1*mat1,T2*mat2,inta,intb)
{
for(i=0;i for(j=0;j
mat2[j][i]=mat1[i][j];
return;
}
//求矩阵的乘积
templatevoidArray_mul(T1*mat1,T2*mat2,T2*result,inta,intb,intc)
{inti,j,k;
for(i=0;i {for(j=0;j {result[i][j]=0;
for(k=0;k
result[i][j]+=mat1[i][k]*mat2[k][j];
}
}
return;
}
//求逆矩阵
voidswap(double*a,double*b){doublec;c=*a;*a=*b;*b=c;};
Inverse(doubleA[N][N],intn)
{
inti,j,k;
doubled;
intJS[N],IS[N];
for(k=0;k{
d=0;
for(i=k;ifor(j=k;jif(fabs(A[i][j])>d){
d=fabs(A[i][j]);
IS[k]=i;
JS[k]=j;
};
};
if(d+1.0==1.0)return0;
if(IS[k]!
=k)for(j=0;jif(JS[k]!
=k)for(i=0;iA[k][k]=1/A[k][k];
for(j=0;j=k)A[k][j]=A[k][j]*A[k][k];
for(i=0;i=k)for(j=0;j=k)A[i][j]=A[i][j]-A[i][k]*A[k][j];
for(i=0;i=k)A[i][k]=-A[i][k]*A[k][k];
};
for(k=n-1;k>=0;k--)
{
for(j=0;j=k)swap(&A[k][j],&A[JS[k]][j]);
for(i=0;i=k)swap(&A[i][k],&A[i][IS[k]]);
};
return1;
}
//原始数据导入
voidInput()
{doublem;j=0;i=0;
ifstreamf1("左片各点像空间坐标.txt");
if(!
f1)
{
cerr<<"左片各点像空间坐标.txtfilenotopen!
"< exit
(1);
}
while(f1>>m)
{
x[i][j++]=m;
if(j>=3)
{i++;j=0;}
}
f1.close();
cout<<"左片各点像空间坐标坐标为:
"< for(i=0;i<6;i++)
for(j=0;j<3;j++)
{
if(j%3==0)
cout< cout< }
cout< i=0;j=0;
ifstreamf2("右片各点像空间坐标.txt");
if(!
f2)
{
cerr<<"右片像各点空间坐标.txtfilenotopen!
"< exit
(1);
}
while(f2>>m)
{
y[i][j++]=m;
if(j>=3)
{i++;j=0;}
}
f2.close();
cout<<"右片各点像空间坐标坐标为:
"< for(i=0;i<6;i++)
for(j=0;j<3;j++)
{
if(j%3==0)
cout< cout< }
cout< b=0.000527;
}
voidmain()
{
doublea[5]={0},d[5]={0},R[3][3],N[2][6],A[6][7]={0},AT[7][6]={0},l[6][1]={0},ATA[7][7]={0},ATl[7][1]={0},DG[7][1]={0};
intt=0;
Input();
do{
t++;
for(i=0;i<5;i++)
a[i]=a[i]+d[i];
//计算旋转矩阵
R[0][0]=cos(a[0])*cos(a[2])-sin(a[0])*sin(a[1])*sin(a[2]);
R[0][1]=-cos(a[0])*sin(a[2])-sin(a[0])*sin(a[1])*cos(a[2]);
R[0][2]=-sin(a[0])*cos(a[1]);
R[1][0]=cos(a[1])*sin(a[2]);
R[1][1]