CMCore/inc/hgl/math/PhysicsConst.h

173 lines
4.1 KiB
C
Raw Normal View History

2021-05-22 18:25:39 +08:00
#ifndef HGL_MATH_PHYSICS_CONST_INCLUDE
#define HGL_MATH_PHYSICS_CONST_INCLUDE
namespace hgl
{
constexpr const double HGL_GOLDEN_RATIO =0.61803398874989484820458683436563811772030917980576;//黄金比例
constexpr const double HGL_SILVER_RATIO =2.4142135623730950488; //白银比例
constexpr const double HGL_SPEED_OF_SOUND =331.3f; //音速(米/秒)
constexpr const double HGL_SPEED_OF_LIGHT =299792458; //光速(米/秒)
constexpr const double HGL_ABSOLUTE_ZERO =-273.15f; //绝对零度
constexpr const double HGL_UNIVERSAL_GRAVITATION =6.67384e-11; //万有引力常数
constexpr const double HGL_EARTH_GRAVITATIONAL_ACCELERATION =9.80665; //地球上的重力加速度(牛顿)
constexpr const double HGL_EARTH_MASS =5.9722e+24; //地球质量
constexpr const double HGL_EARTH_RADIUS =6371000; //地球半径(米)
/**
2021-05-22 18:25:39 +08:00
*
* @param m1
* @param m2
* @param length
*/
template<typename T>
inline T UniversalGravitation(const T m1,const T m2,const T length)
{
return HGL_UNIVERSAL_GRAVITATION*((m1*m2)/(length*length));
}
/**
2021-05-22 18:25:39 +08:00
* <br>
* : (*)/()=
* @param m
* @param raidus
* @return ()
*/
template<typename T>
inline T UniversalGravitation(const T m,const T radius)
{
return (HGL_UNIVERSAL_GRAVITATION*m)/(radius*radius);
}
/**
2021-05-22 18:25:39 +08:00
*
* @param m
* @param v
* @param r
*/
template<typename T>
inline T CentripetalForce(const T m,const T v,const T r)
{
return (m*v*v)/r;
}
/**
2021-05-22 18:25:39 +08:00
*
* @param power
* @param weight
*/
template<typename T>
inline T AddSpeed(const T &power,const T &weight)
{
return power/weight;
}
/**
2021-05-22 18:25:39 +08:00
* ()
* @param m0
* @param v
*/
template<typename T>
inline T RunWeight(const T &m0,const T &v)
{
return m0/sqrt(1-(v*v)/(HGL_SPEED_OF_LIGHT*HGL_SPEED_OF_LIGHT));
}
/**
*
*/
template<typename T>
inline T Celsius2Fahrenheit(const T &c)
{
return c*1.8+32;
}
/**
*
*/
template<typename T>
inline T Fahrenheit2Celsius(const T &f)
{
return (f - 32) / 1.8;
}
/**
*
*/
template<typename T>
inline T Celsius2Kelvin(const T &c)
{
return c + 273.15;
}
/**
*
*/
template<typename T>
inline T Kelvin2Celsius(const T &k)
{
return k - 273.15;
}
/**
* .
*/
template<typename T>
inline T Kilometer2Mile(const T &k)
{
return k * 0.621371192;
}
/**
* .
*/
template<typename T>
inline T Mile2Kilometer(const T &m)
{
return m * 1.609344;
}
/**
* .
*/
template<typename T>
inline T Inch2Centimeter(const T &i)
{
return i * 2.54;
}
/**
* .
*/
template<typename T>
inline T Centimeter2Inch(const T &c)
{
return c * 0.393700787;
}
/**
* .
*/
template<typename T>
inline T Kilometer2NauticalMile(const T &k)
{
return k * 0.539956803;
}
/**
* .
*/
template<typename T>
inline T NauticalMile2Kilometer(const T &n)
{
return n * 1.852;
}
}//namespace hgl
#endif//HGL_MATH_PHYSICS_CONST_INCLUDE