资源简介
本资源通过读取txt文件中的左片和右片像点坐标,通过外方位元素解算,最后输出5个相对定向元素。
代码片段和文件信息
#include
#include
#include
class Point
{
public:
double X1;
double Y1;
double Z1;
double X2;
double Y2;
double Z2;
double NL;
double NR;
double Q;
};
#define f 153033
#define EP 0.00003//未知数的精度
void Transcorr(double phidouble omegadouble kappadouble *R)
{
double a1=cos(phi)*cos(kappa)-sin(phi)*sin(omega)*sin(kappa);
double a2=-cos(phi)*sin(kappa)-sin(phi)*sin(omega)*cos(kappa);
double a3=-sin(phi)*cos(omega);
double b1=cos(phi)*sin(kappa);
double b2=cos(omega)*cos(kappa);
double b3=-sin(omega);
double c1=sin(phi)*cos(kappa)+cos(phi)*sin(omega)*sin(kappa);
double c2=-sin(phi)*sin(kappa)+cos(phi)*sin(omega)*cos(kappa);
double c3=cos(phi)*cos(omega);
R[0]=a1;R[1]=a2;R[2]=a3;R[3]=b1;R[4]=b2;R[5]=b3;R[6]=c1;R[7]=c2;R[8]=c3;
}
//功 能: 矩阵求逆
//输 入: 矩阵a,阶数n。
//输 出: 返回0(成功),1(失败),经求逆后,a矩阵为逆矩阵
int InverseMatrix(double *a int n)
{
int *is*js;
int ijkluv;
double tempmax_v;
is=(int *)malloc(n*sizeof(int));
js=(int *)malloc(n*sizeof(int));
if(is==NULL||js==NULL) return(0);
for(k=0;k {
max_v=0.0;
for(i=k;i {
for(j=k;j {
temp=fabs(a[i*n+j]);
if(temp>max_v)
{
max_v=temp; is[k]=i; js[k]=j;
}
}
}
if(max_v==0.0)
{
free(is); free(js);
return(0);
}
if(is[k]!=k)
{
for(j=0;j {
u=k*n+j; v=is[k]*n+j;
temp=a[u]; a[u]=a[v]; a[v]=temp;
}
}
if(js[k]!=k)
{
for(i=0;i {
u=i*n+k; v=i*n+js[k];
temp=a[u]; a[u]=a[v]; a[v]=temp;
}
}
l=k*n+k;
a[l]=1.0/a[l];
for(j=0;j {
if(j!=k)
{
u=k*n+j;
a[u]*=a[l];
}
}
for(i=0;i {
if(i!=k)
{
for(j=0;j {
if(j!=k)
{
u=i*n+j;
a[u]-=a[i*n+k]*a[k*n+j];
}
}
}
}
for(i=0;i {
if(i!=k)
{
u=i*n+k;
a[u]*=-a[l];
}
}
}
for(k=n-1;k>=0;k--)
{
if(js[k]!=k)
{
for(j=0;j {
u=k*n+j; v=js[k]*n+j;
temp=a[u]; a[u]=a[v]; a[v]=temp;
}
}
if(is[k]!=k)
{
for(i=0;i {
u=i*n+k; v=i*n+is[k];
temp=a[u]; a[u]=a[v]; a[v]=temp;
}
}
}
free(is); free(js);
return(1);
}
//功 能: 矩阵转置
//输 入: 矩阵a(mxn阶)转置后存在矩阵at(nxm阶)中
//输 出: void,结果在矩阵at中
void TransposeMatrix(double *a double *at int m int n)
{
int ij;
for(i=0;i for(j=0;j *(at+i*m+j)=*(a+j*n+i);
}
//功 能: 矩阵相乘
//输 入: 矩阵a(mxn阶)乘以矩阵b(nxk阶)等于矩阵c(mxk阶)。
//输 出: void,结果在矩阵c中
void MultiplyMatrix(double *a double *b double *c int m int n int k)
{
int ijii;
for(i=0;i {
for(j=0;j {
*(c+i*k+j)=0;
for(ii=0;ii *(c+i*k+j)=*(c+i*k+j)+*(a+i*n+ii)**(b+ii*k+j);
}
}
}
void main()
{
double phiomegakappauv;
double Bx=200000;
int num=0;
char c[1024];
phi=omega=kappa=u=v=0;
char ptname[
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 870 2009-09-21 13:12 Relative Orientation\1.TXT
文件 58368 2009-09-21 14:53 Relative Orientation\Debug\Relative Orientation.bsc
文件 221279 2009-09-21 14:53 Relative Orientation\Debug\Relative Orientation.exe
文件 259284 2009-09-21 14:53 Relative Orientation\Debug\Relative Orientation.ilk
文件 12304 2009-09-21 14:53 Relative Orientation\Debug\Relative Orientation.obj
文件 223888 2009-09-21 13:47 Relative Orientation\Debug\Relative Orientation.pch
文件 508928 2009-09-21 14:53 Relative Orientation\Debug\Relative Orientation.pdb
文件 0 2009-09-21 14:53 Relative Orientation\Debug\Relative Orientation.sbr
文件 115712 2009-09-21 14:55 Relative Orientation\Debug\vc60.idb
文件 61440 2009-09-21 14:53 Relative Orientation\Debug\vc60.pdb
文件 5556 2009-09-21 14:53 Relative Orientation\Relative Orientation.cpp
文件 4452 2009-09-21 14:56 Relative Orientation\Relative Orientation.dsp
文件 565 2009-09-21 09:45 Relative Orientation\Relative Orientation.dsw
文件 48640 2009-09-22 10:01 Relative Orientation\Relative Orientation.opt
文件 274 2009-09-21 14:55 Relative Orientation\Relative Orientation.plg
目录 0 2009-09-21 14:53 Relative Orientation\Debug
目录 0 2009-09-22 10:01 Relative Orientation
文件 58368 2009-09-22 10:01 Relative Orientation\Relative Orientation.ncb
----------- --------- ---------- ----- ----
1579928 18
评论
共有 条评论