11#include "FgSerial.hpp"
17{
return int(std::floor(v)); }
21{
return int(std::floor(v)); }
24inline void futConvert(
double a,uchar &b) {b =
static_cast<uchar
>(a + 0.5); }
25inline void futConvert(
double a,ushort &b) {b =
static_cast<ushort
>(a + 0.5); }
26inline void futConvert(
double a,uint &b) {b =
static_cast<uint
>(a + 0.5); }
28inline void futConvert(
double a,
char &b) {b =
static_cast<char>(futFloor(a + 0.5)); }
29inline void futConvert(
double a,
short &b) {b =
static_cast<short>(futFloor(a + 0.5)); }
30inline void futConvert(
double a,
int &b) {b =
static_cast<int>(futFloor(a + 0.5)); }
32inline void futConvert(
float a,uchar &b) {b =
static_cast<uchar
>(a + 0.5f); }
33inline void futConvert(
float a,ushort &b) {b =
static_cast<ushort
>(a + 0.5f); }
34inline void futConvert(
float a,uint &b) {b =
static_cast<uint
>(a + 0.5f); }
36inline void futConvert(
float a,
char &b) {b =
static_cast<char>(futFloor(a + 0.5f)); }
37inline void futConvert(
float a,
short &b) {b =
static_cast<short>(futFloor(a + 0.5f)); }
38inline void futConvert(
float a,
int &b) {b =
static_cast<int>(futFloor(a + 0.5f)); }
40inline void futConvert(ushort a,
char &b) {b =
static_cast<char>(a); }
41inline void futConvert(ushort a,uchar &b) {b =
static_cast<uchar
>(a); }
43inline void futConvert(uchar a,uchar &b) {b = a; }
44inline void futConvert(uchar a,ushort &b) {b = a; }
45inline void futConvert(uchar a,
float &b) {b = a; }
47inline void futConvert(
int a,
float &b) {b =
static_cast<float>(a); }
49inline schar fgClampToSchar(
int val)
51 if (val < -128)
return schar(-128);
52 if (val > 127)
return schar(127);
56uint fr2Log2Floor(uint);
58uint fr2Log2Ceil(uint);
61inline uint fr2Pow2Floor(uint a)
63 return (1 << (fr2Log2Floor(a)));
66inline uint fr2Pow2Ceil(uint a)
68 return (1 << (fr2Log2Ceil(a)));
71inline bool futIsPow2(uint a)
73 return (fr2Log2Floor(a) == fr2Log2Ceil(a));
77inline T fr2RadsToDegs(T
const angle)
79 return(angle * (T)(180.0 / 3.141592653589793237462643383279));
83inline T fr2DegsToRads(T
const angle)
85 return(angle * (T)(3.141592653589793237462643383279 / 180.0));
91inline T
const& futClamp(T
const& v,T
const& l,T
const& h)
94 else if (v > h)
return h;
101std::vector<T> futSubVec(
103 const std::vector<T> &v,
107 FGASSERT(e < v.size());
109 std::vector<T> r(e-b+1);
111 for (
size_t ii=b; ii<=e; ii++)