📄 gmutils.h
字号:
// gmUtils.h - graphics math utility functions//// libgm++: Graphics Math Library// Ferdi Scheepers and Stephen F May// 15 June 1994#ifndef GMUTILS_H#define GMUTILS_H#include <iostream.h>#include <math.h>#include <bool.h>#include <gmConst.h>// ONE-ARGUMENT UTILITY FUNCTIONSinline double gmAbs(double f){ return (f >= 0) ? f : -f;}inline double gmCeil(double f){ return (f == int(f)) ? f : (f > 0) ? double(int(f) + 1) : double(int(f));}inline double gmCube(double f){ return f * f * f;}inline double gmDegrees(double f){ return f * gmRADTODEG;}inline double gmFloor(double f){ return (f == int(f)) ? f : (f > 0) ? double(int(f)) : double(int(f) - 1);}inline double gmInv(double f){ return 1.0 / f;}inline bool gmIsZero(double f){ return (gmAbs(f) < gmEPSILON);}inline double gmRadians(double f){ return f * gmDEGTORAD;}inline double gmRound(double f){ return (f >= 0) ? double(int(f + 0.5)) : double(- int(0.5 - f));}inline double gmSign(double f){ return (f < 0) ? -1.0 : 1.0;}inline double gmSmooth(double f){ return (3.0 - 2.0 * f) * f * f;}inline double gmSqr(double f){ return f * f;}inline double gmTrunc(double f){ return double(int(f));}inline double gmZSign(double f){ return (f > 0) ? 1.0 : (f < 0) ? -1.0 : 0.0;}// TWO-ARGUMENT UTILITY FUNCTIONSinline bool gmFuzEQ(double f, double g){ return (f <= g) ? (f >= g - gmEPSILON) : (f <= g + gmEPSILON);}inline bool gmFuzGEQ(double f, double g){ return (f >= g - gmEPSILON);}inline bool gmFuzLEQ(double f, double g){ return (f <= g + gmEPSILON);}inline double gmMax(double f, double g){ return (f > g) ? f : g;}inline double gmMin(double f, double g){ return (f < g) ? f : g;}inline void gmSwap(double& f, double& g){ double gmTmp = f; f = g; g = gmTmp;}inline void gmSwap(int& i, int& j){ int gmTmp = i; i = j; j = gmTmp;}// MULTI-ARGUMENT UTILITY FUNCTIONSinline void gmClamp(double &f, double l, double h){ if(f < l) f = l; if(f > h) f = h;}inline double gmLerp(double f, double l, double h){ return l + ((h - l) * f );}inline double gmMax(double f, double g, double h){ return (f > g) ? gmMax(f, h) : gmMax(g, h);}inline double gmMin(double f, double g, double h){ return (f < g) ? gmMin(f, h) : gmMin(g, h);}inline double gmSlide(double f, double l, double h){ return (f < 0) ? l : (f > 1) ? h : gmLerp(gmSmooth(f), l, h);}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -