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.

62 lines
1.0 KiB
C++

#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)
{
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;
}