• 大小: 7KB
    文件类型: .cpp
    金币: 2
    下载: 1 次
    发布日期: 2021-06-17
  • 语言: C/C++
  • 标签: 相对定向  

资源简介

利用连续像对相对定向的方法进行立体像对相对定向,得到像对方位元素

资源截图

代码片段和文件信息

#include 
#include  
#include 
const int N=8;  
void Mult(double R[8][8] double b[8][8]double c[8][8] int m int t int p);  
void inverse(double c[N][N]int t); 
void main() 
{ double  R[N][N]lx[N]ly[N]rx[N]ry[N]A[N][N]l[N][N]ATA[N][N]; 
  double f=0.024Q=0W=0K=0x=0y=0X[8][8]bubvbw; 
  int ijn; 
  int q=0k;  
  cout<<“请输入同名像点的对数“<>n;           
  lx[1]=0.001983lx[2]=0.000924lx[3]=0.001068lx[4]=0.001208lx[5]=-0.000514lx[6]=0.001293          
  ly[1]=-0.006091ly[2]=0.007098ly[3]=0.004538ly[4]=0.006858ly[5]=-0.010050ly[6]=-0.008089           
  rx[1]=-0.003202rx[2]=-0.002830rx[3]=-0.002878rx[4]=-0.002578rx[5]=-0.005642rx[6]=-0.003981       
  ry[1]=-0.005564ry[2]=0.007694ry[3]=0.005098ry[4]=0.007429ry[5]=-0.009152ry[6]=-0.007441      //输入像点的坐标
  bu=rx[1]-lx[1];   
  do 
    { q++;      
      bv=bu*x;bw=bu*y;    
      double  R[8][8]b[8][8]l[8][8]c[8][8]A[8][8]AT[8][8]Z[8][8]ATA[8][8]d[8][8];   
      R[0][0]=cos(Q)*cos(K)-sin(Q)*sin(W)*sin(K);     
      R[0][1]=-cos(Q)*sin(K)-sin(Q)*sin(W)*cos(K);     
      R[0][2]=-sin(Q)*cos(W);  
  R[1][0]=cos(W)*sin(K);  
      R[1][1]=cos(W)*cos(K);  
  R[1][2]=-sin(W);   
      R[2][0]=sin(Q)*cos(K)+cos(Q)*sin(W)*sin(K);  
      R[2][1]=-sin(Q)*sin(K)+cos(Q)*sin(W)*cos(K);
      R[2][2]=cos(Q)*cos(W);      //把相对方位元素带入公式,计算得到9个方向余弦  
      b[0][0]=lx[1];
      b[1][0]=ly[1];
      b[2][0]=-f;
      b[0][2]=lx[3];
      b[1][2]=ly[3];
      b[2][2]=-f;
      b[0][4]=lx[5];
      b[1][4]=ly[5];
      b[2][4]=-f; 
      b[0][1]=lx[2];
      b[1][1]=ly[2];
      b[2][1]=-f;
      b[0][3]=lx[4];
      b[1][3] =ly[4];
      b[2][3]=-f;
      b[0][5]=lx[6];
      b[1][5]=ly[6];
      b[2][5]=-f;     
      d[0][0]=rx[1];
      d[1][0]=ry[1];
      d[2][0]=-f;
      d[0][2]=rx[3];
      d[1][2]=ry[3];
      d[2][2]=-f;
      d[0][4]=rx[5];
      d[1][4]=ry[5];
      d[2][4]=-f;   
      d[0][1]=rx[2];
      d[1][1]=ry[2];
      d[2][1]=-f;
      d[0][3]=rx[4];
      d[1][3] =ry[4];
      d[2][3]=-f;
      d[0][5]=rx[6];
      d[1][5]=ry[6];
      d[2][5]=-f;   //将坐标值赋值给矩阵
      Mult(Rdc336);      
       for(j=0;j<=5;j++)   
       {  l[j][0]=b[1][j]*(bu*c[2][j]-bw*c[0][j])/(c[2][j]*b[0][j]-c[0][j ]*b[2][j])-c[1][j]*(bu*b[2][j]-bw*b[0][j])/(c[2][j]*b[0][j]-c[0][j]*b[2][j])-bv;    
          A[j][0]=-c[0][j]*c[1][j]*(bu*b[2][j]-bw*b[0][j])/((c[2][j]*b[0][j]-c[0][j]*b[2][j])*c[2][j]);  
          A[j][1]=-(c[2][j]+c[1][j]*c[1][j]/c[2][j])*(bu*b[2][j]-bw*b[0][j])/(c[2][j]*b[0][j]-c[0][j]*b[2][j]);   
          A[j][2]=(bu*b[2][j]-bw*b[0][j])/(c[2][j]*b[0][j]-c[0][j]*b[2][j])*c[0][j];   
          A[j][3]=bu;     
          A[j][4]=-bu*c[1][j]/c[2][j]; 
       }      
       for(i=0;i<=5;i++)       
         for(k=0;k<=4;k++)      
         {  
           AT[k][i]=A[i][k];//右片像空间坐标
           }         
          Mult(ATAATA565);    
 

评论

共有 条评论