资源简介
c++类封装程序,可以实现任意多点的空间后方交会平差计算,并计算单位权中误差和各外方位元素的中误差,最后输出所有结果。
代码片段和文件信息
#include “stdafx.h“
#include “Photogrammetry.h“
#include “math.h“
Photogrammetry::Photogrammetry(void)
{
}
Photogrammetry::~Photogrammetry(void)
{
}
Photogrammetry::Photogrammetry(int num1 double point[]double f1double xdouble yint scale1)
{
int i;
num=num1;
f=f1/*/1000*/x0=xy0=yscale=scale1;
rawpoint = new double[num*5];
for(i=0;i {rawpoint[i]=point[i];}
}
void Photogrammetry::inverse(double c[6][6]int n)
{
int ijhk;
double p;
double q[6][12];
for(i=0;i for(j=0;j q[i][j]=c[i][j];
for(i=0;i for(j=n;j<12;j++)
{
if(i+6==j)
q[i][j]=1;
else
q[i][j]=0;
}
for(h=k=0;k for(i=k+1;i {
if(q[i][h]==0)
continue;
p=q[k][h]/q[i][h];
for(j=0;j<12;j++)
{
q[i][j]*=p;
q[i][j]-=q[k][j];
}
}
for(h=k=n-1;k>0;k--h--) // 消去对角线以上的数据
for(i=k-1;i>=0;i--)
{
if(q[i][h]==0)
continue;
p=q[k][h]/q[i][h];
for(j=0;j<12;j++)
{
q[i][j]*=p;
q[i][j]-=q[k][j];
}
}
for(i=0;i {
p=1.0/q[i][i];
for(j=0;j<12;j++)
q[i][j]*=p;
}
for(i=0;i for(j=0;j c[i][j]=q[i][j+6];
}
void Photogrammetry::Measure(double result[6])
{
double minn=0.00000000001;
Xs=0.0Ys=0.0Zs=0.0Omega=0.0Kappa=0.0Phi=0.0;
/*double deltaXdeltaYdeltaZdeltaOdeltaKdeltaP;*/
double *x = new double[num*2];//储存(x)(y)
double *L=new double[num*2];//储存改正数lx,ly
double A[2][6] AtA[6][6];//法方程系数矩阵A
double X[6]X1[6];//改正数
bool isok=false;//判断是否完成迭代
//double Det;
int imnkjtimes=0;
double **At=new double*[6];
for(i=0;i<6;i++)
{At[i]=new double[num*2];}
double **Mid=new double*[6];
for(i=0;i<6;i++)
{Mid[i]=new double[num*2];}
for(i=0;i<6;i++)
{
for(j=0;j {Mid[i][j]=0;At[i][j]=0;}
}
for(i=0;i<6;i++)//初始化
{
for(n=0;n<6;n++)
{AtA[i][n]=0;AtA_1[i][n]=0;}
X[i]=0;X1[i]=9999999;
}
for(i=0;i {
Xs=Xs+rawpoint[i*5+2];
Ys=Ys+rawpoint[i*5+3];
}
Xs=Xs/num;Ys=Ys/num;Zs=scale*f/1000;
//Xs0=XsYs0=YsZs0=ZsOmega0=OmegaKappa0=KappaPhi0=Phi;
/*printf(“外方位元素:%lf %lf %lf\n“XsYsZs);*/
while(!isok)
{
for(i=0;i<6;i++)//再初始化
{
for(n=0;n<6;n++)
{AtA[i][n]=0;AtA_1[i][n]=0;}
X[i]=0;
}
for(i=0;i<6;i++)
{
for(j=0;j {Mid[i][j]=0;At[i][j]=0;}
}
//得到旋转矩阵
R[0][0]=cos(Phi)*cos(Kappa)-sin(Omega)*sin(Phi)*sin(Kappa);//a1
R[0][1]=-cos(Phi)*sin(Kappa)-sin(Omega)*sin(Phi)*cos(Kappa);//a2
R[0][2]=-sin(Phi)*cos(Omega);//a3
R[1][0]=sin(Kappa)*cos(Omega);//b1
R[1][1]=cos(Kappa)*cos(Omega);//b2
R[1][2]=-sin(Omega);//b3
R[2][0]=sin(Phi)*cos(Kappa)+sin(Omega)*cos(Phi)*sin(Kappa);//c1
R[2][1]=-sin(Phi)*sin(Kappa)+sin(Omega)*co
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 55808 2015-10-31 00:16 Resection\Debug\Resection.exe
文件 249608 2015-10-31 00:16 Resection\Debug\Resection.ilk
文件 453632 2015-10-31 00:16 Resection\Debug\Resection.pdb
文件 2949120 2015-10-31 01:38 Resection\ipch\resection-abc8270d\resection-ad1c38d8.ipch
文件 2206 2015-10-31 00:16 Resection\Resection\Debug\cl.command.1.tlog
文件 3470 2015-10-31 00:16 Resection\Resection\Debug\CL.read.1.tlog
文件 1526 2015-10-31 00:16 Resection\Resection\Debug\CL.write.1.tlog
文件 2 2015-10-31 00:16 Resection\Resection\Debug\li
文件 2 2015-10-31 00:16 Resection\Resection\Debug\li
文件 2 2015-10-31 00:16 Resection\Resection\Debug\li
文件 2 2015-10-31 00:16 Resection\Resection\Debug\li
文件 1518 2015-10-31 00:16 Resection\Resection\Debug\li
文件 3156 2015-10-31 00:16 Resection\Resection\Debug\li
文件 736 2015-10-31 00:16 Resection\Resection\Debug\li
文件 29989 2015-10-31 00:16 Resection\Resection\Debug\Photogrammetry.obj
文件 1984 2015-10-31 00:16 Resection\Resection\Debug\Resection.Build.CppClean.log
文件 76 2015-10-31 00:16 Resection\Resection\Debug\Resection.lastbuildstate
文件 2021 2015-10-31 00:16 Resection\Resection\Debug\Resection.log
文件 9971 2015-10-31 00:16 Resection\Resection\Debug\Resection.obj
文件 1245184 2015-10-31 00:16 Resection\Resection\Debug\Resection.pch
文件 11645 2015-10-31 00:16 Resection\Resection\Debug\stdafx.obj
文件 76800 2015-10-31 00:16 Resection\Resection\Debug\vc110.idb
文件 143360 2015-10-31 00:16 Resection\Resection\Debug\vc110.pdb
文件 10297 2015-10-29 21:47 Resection\Resection\Photogrammetry.cpp
文件 629 2015-10-25 20:23 Resection\Resection\Photogrammetry.h
文件 1524 2015-09-28 17:51 Resection\Resection\ReadMe.txt
文件 732 2015-10-29 22:14 Resection\Resection\Resection.cpp
文件 4620 2015-09-29 12:12 Resection\Resection\Resection.vcxproj
文件 1507 2015-09-29 12:12 Resection\Resection\Resection.vcxproj.filters
文件 214 2015-09-28 17:51 Resection\Resection\stdafx.cpp
............此处省略14个文件信息
- 上一篇:C语言数据结构严蔚敏版魔王语言
- 下一篇:家庭理财系统C++
相关资源
- c++读取JPG图片,完成计算机视觉中的
- 摄影测量相对定向与绝对定向
- 空间后方、前方交会算法的C++实现
- 光束法区域平差c++程序
- 单像空间后方交会c++程序代码
- 摄影测量绝对定向
- C++实现的单片空间后方交会
- 摄影测量像立体像对的前方交会
- 空间后方交会(基于MFC)
- 单片空间后方交会,求外方位元素、
- 单片空间后方交会c++
- 摄影测量直接线性变换DLTVC++程序代码
- 摄影测量空间后方交会程序合集,含
- 单向空间后方交会实验代码
- 空间后方交会C++
- C++编写的后方交会程序
- 单像空间后方交会 C++实现
- 摄影测量后方交会程序
- 空间后方交会MFC版,C++源代码
- 摄影测量学程序后方交会
- 单向空间后方交会c++程序
- 摄影测量前方交会源码C++
- 近景摄影测量-单片空间后方交会程序
评论
共有 条评论