2021-05-22 18:25:39 +08:00
|
|
|
|
#ifndef HGL_MATH_PHYSICS_CONST_INCLUDE
|
2021-05-10 11:25:21 +08:00
|
|
|
|
#define HGL_MATH_PHYSICS_CONST_INCLUDE
|
|
|
|
|
|
|
|
|
|
namespace hgl
|
|
|
|
|
{
|
2024-05-13 22:31:50 +08:00
|
|
|
|
constexpr const double HGL_GOLDEN_RATIO =0.61803398874989484820458683436563811772030917980576;//黄金比例
|
|
|
|
|
constexpr const double HGL_SILVER_RATIO =2.4142135623730950488; //白银比例
|
2021-05-10 11:25:21 +08:00
|
|
|
|
|
2024-05-13 22:31:50 +08:00
|
|
|
|
constexpr const double HGL_SPEED_OF_SOUND =331.3f; //音速(米/秒)
|
|
|
|
|
constexpr const double HGL_SPEED_OF_LIGHT =299792458; //光速(米/秒)
|
2021-05-10 11:25:21 +08:00
|
|
|
|
|
2024-05-13 22:31:50 +08:00
|
|
|
|
constexpr const double HGL_ABSOLUTE_ZERO =-273.15f; //绝对零度
|
2021-05-10 11:25:21 +08:00
|
|
|
|
|
2024-05-13 22:31:50 +08:00
|
|
|
|
constexpr const double HGL_UNIVERSAL_GRAVITATION =6.67384e-11; //万有引力常数
|
2021-05-10 11:25:21 +08:00
|
|
|
|
|
2024-05-13 22:31:50 +08:00
|
|
|
|
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-10 11:25:21 +08:00
|
|
|
|
|
|
|
|
|
/**
|
2021-05-22 18:25:39 +08:00
|
|
|
|
* 物体万有引力计算
|
|
|
|
|
* @param m1 星球质量
|
|
|
|
|
* @param m2 物体质量
|
|
|
|
|
* @param length 到星球中心的距离
|
2021-05-10 11:25:21 +08:00
|
|
|
|
*/
|
|
|
|
|
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 星球的重力加速度(牛顿)
|
2021-05-10 11:25:21 +08:00
|
|
|
|
*/
|
|
|
|
|
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 距离
|
2021-05-10 11:25:21 +08:00
|
|
|
|
*/
|
|
|
|
|
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 质量
|
2021-05-10 11:25:21 +08:00
|
|
|
|
*/
|
|
|
|
|
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 运动速度
|
2021-05-10 11:25:21 +08:00
|
|
|
|
*/
|
|
|
|
|
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));
|
|
|
|
|
}
|
2022-12-30 11:15:19 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 摄氏度到华氏度
|
|
|
|
|
*/
|
|
|
|
|
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;
|
|
|
|
|
}
|
2023-10-31 16:23:21 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 公里到英里.
|
|
|
|
|
*/
|
|
|
|
|
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;
|
|
|
|
|
}
|
2021-05-10 11:25:21 +08:00
|
|
|
|
}//namespace hgl
|
|
|
|
|
#endif//HGL_MATH_PHYSICS_CONST_INCLUDE
|
2023-10-31 16:23:21 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|