You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
|
|
|
|
|
#include "angle.h"
|
|
|
|
|
//#include "StdAfx.h"
|
|
|
|
|
#include "Stream/ugdefs.h"
|
|
|
|
|
#include "math.h"
|
|
|
|
|
|
|
|
|
|
const double EPSILON=1.0E-12;
|
|
|
|
|
//const double PI=4.0*atan(1.0);
|
|
|
|
|
|
|
|
|
|
//重载构造函数,有缺省值
|
|
|
|
|
Angle::Angle()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Angle::~Angle(void)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//度 转 度分秒
|
|
|
|
|
void Angle::DegtoDms(double deg, int &d, int &m, double &s)
|
|
|
|
|
{
|
|
|
|
|
d = int(deg + EPSILON);//整数部分度
|
|
|
|
|
double dTmp = (deg - d) * 60;//小数部分转换成分
|
|
|
|
|
m = int(dTmp+ EPSILON);//取分的整数部分
|
|
|
|
|
s = (dTmp - m) * 60;//截取秒
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//角度 转弧度
|
|
|
|
|
void Angle::DegtoRad(double deg, double &rad)
|
|
|
|
|
{
|
|
|
|
|
rad = deg * PI/180;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//角度 转 十进制度
|
|
|
|
|
void Angle::DegtodDeg(double deg, int &d, double &m)
|
|
|
|
|
{
|
|
|
|
|
d = int(deg + EPSILON);//整数部分度
|
|
|
|
|
m = (deg - d) * 60;//小数部分转换成分
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 度分秒 转 度
|
|
|
|
|
void Angle::DmstoDeg(int d, int m, double s, double °)
|
|
|
|
|
{
|
|
|
|
|
deg = d + (m / 60.0) + (s / 3600.0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//度分秒 转 十进制度
|
|
|
|
|
void Angle::DmstodDeg(int d, int m, double s, int &dDeg, double &dm)
|
|
|
|
|
{
|
|
|
|
|
dDeg = d;
|
|
|
|
|
dm = m + s/60;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|