📄 common.cpp
字号:
#include "stdafx.h"
#include "Common.h"
#include <math.h>
#include "GISVector.h"
#include "GISMatrix.h"
//#include "hoopsDoc.h"
#include "Common.h"
double Dms2Rad(double angle)
{
int degree=0,sign=0;
double minute=0.0,ang=0.0;
if (angle >= 0.0)
sign=1;
else
sign=-1;
angle=fabs(angle);
degree=angle;
minute=angle-degree;
ang=degree + minute/0.60;
ang /= Rad;
return ang*sign;
}
double Rad2Dms(double angle)
{
int degree=0,sign=0;
double minute=0.0,ang=0.0;
if (angle >= 0.0)
sign=1;
else
sign=-1;
angle=fabs(angle*Rad);
degree=angle;
minute=angle-degree;
ang=degree + ((int)(minute*60+0.5))/100.0;
return ang*sign;
}
int Agaus(double a[], double b[], int n)
{
int *js,l,k,i,j,is,p,q;
double d,t;
js=new int[n];
l=1;
for (k=0;k<=n-2;k++)
{
d=0.0;
for (i=k;i<=n-1;i++)
for (j=k;j<=n-1;j++)
{
t=fabs(a[i*n+j]);
if (t>d)
{
d=t; js[k]=j; is=i;
}
}
if (d+1.0==1.0)
l=0;
else
{
if (js[k]!=k)
for (i=0;i<=n-1;i++)
{
p=i*n+k; q=i*n+js[k];
t=a[p]; a[p]=a[q]; a[q]=t;
}
if (is!=k)
{
for (j=k;j<=n-1;j++)
{
p=k*n+j; q=is*n+j;
t=a[p]; a[p]=a[q]; a[q]=t;
}
t=b[k]; b[k]=b[is]; b[is]=t;
}
}
if (l==0)
{
delete []js;
// printf("fail\n");
return(0);
}
d=a[k*n+k];
for (j=k+1;j<=n-1;j++)
{
p=k*n+j; a[p]=a[p]/d;
}
b[k]=b[k]/d;
for (i=k+1;i<=n-1;i++)
{
for (j=k+1;j<=n-1;j++)
{
p=i*n+j;
a[p]=a[p]-a[i*n+k]*a[k*n+j];
}
b[i]=b[i]-a[i*n+k]*b[k];
}
}
d=a[(n-1)*n+n-1];
if (fabs(d)+1.0==1.0)
{
delete []js;
// printf("fail\n");
return(0);
}
b[n-1]=b[n-1]/d;
for (i=n-2;i>=0;i--)
{
t=0.0;
for (j=i+1;j<=n-1;j++)
t=t+a[i*n+j]*b[j];
b[i]=b[i]-t;
}
js[n-1]=n-1;
for (k=n-1;k>=0;k--)
if (js[k]!=k)
{
t=b[k]; b[k]=b[js[k]]; b[js[k]]=t;
}
delete []js;
return(1);
}
CVector VecAdd(CVector v1, CVector v2)
{
CVector v;
v.x=v1.x+v2.x;
v.y=v1.y+v2.y;
v.z=v1.z+v2.z;
return v;
}
CVector VecCross(CVector v1, CVector v2)
{
CVector v;
v.x=v1.y*v2.z-v1.z*v2.y;
v.y=v1.z*v2.x-v1.x*v2.z;
v.z=v1.x*v2.y-v1.y*v2.x;
return v;
}
CVector VecAdd2(double r1, CVector v1, double r2, CVector v2)
{
CVector v;
v.x=r1*v1.x+r2*v2.x;
v.y=r1*v1.y+r2*v2.y;
v.z=r1*v1.z+r2*v2.z;
return v;
}
CVector VecSub(CVector v1, CVector v2)
{
CVector v;
v.x=v1.x-v2.x;
v.y=v1.y-v2.y;
v.z=v1.z-v2.z;
return v;
}
double VecDot(CVector v1, CVector v2)
{
return v1.x*v2.x+v1.y*v2.y+v1.z*v2.z;
}
double Rndf(double r)
{
/*double fr=0.0, constant=0.0;
if (Metric == 0)
constant=100.0;
else
constant=100000.0;
if (r <= 0.0)
fr=-int(fabs(r)*constant+0.5)/constant;
else
fr=int(r*constant+0.5)/constant;
return fr;*/
return NULL;
}
void ff1(double *Vector,double g[2] )
{
double *p;
p=Vector;
g[0]=5*(*p)-(*(p+1))*(*(p+1))-1.0;
g[1]=4*(*p)*(*p)-2*(*(p+1));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -