ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/util.h
(Generate patch)

Comparing deliantra/server/include/util.h (file contents):
Revision 1.87 by root, Mon Jan 12 03:40:21 2009 UTC vs.
Revision 1.88 by root, Tue May 5 04:51:56 2009 UTC

118 118
119// sign0 returns -1, 0 or +1 119// sign0 returns -1, 0 or +1
120template<typename T> 120template<typename T>
121static inline T sign0 (T v) { return v ? sign (v) : 0; } 121static inline T sign0 (T v) { return v ? sign (v) : 0; }
122 122
123// div* only work correctly for div > 0
123// div, with correct rounding (< 0.5 downwards, >=0.5 upwards) 124// div, with correct rounding (< 0.5 downwards, >=0.5 upwards)
124template<typename T> static inline T div (T val, T div) { return (val + div / 2) / div; } 125template<typename T> static inline T div (T val, T div)
126{
127 return expect_false (val < 0) ? - ((-val + (div - 1) / 2) / div) : (val + div / 2) / div;
128}
125// div, round-up 129// div, round-up
126template<typename T> static inline T div_ru (T val, T div) { return (val + div - 1) / div; } 130template<typename T> static inline T div_ru (T val, T div)
131{
132 return expect_false (val < 0) ? - ((-val ) / div) : (val + div - 1) / div;
133}
127// div, round-down 134// div, round-down
128template<typename T> static inline T div_rd (T val, T div) { return (val ) / div; } 135template<typename T> static inline T div_rd (T val, T div)
136{
137 return expect_false (val < 0) ? - ((-val + (div - 1) ) / div) : (val ) / div;
138}
129 139
140// lerp* only work correctly for min_in < max_in
141// Linear intERPolate, scales val from min_in..max_in to min_out..max_out
130template<typename T> 142template<typename T>
131static inline T 143static inline T
132lerp (T val, T min_in, T max_in, T min_out, T max_out) 144lerp (T val, T min_in, T max_in, T min_out, T max_out)
133{ 145{
134 return min_out + div <T> ((val - min_in) * (max_out - min_out), max_in - min_in); 146 return min_out + div <T> ((val - min_in) * (max_out - min_out), max_in - min_in);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines