00001 /* 00002 This program is distributed under the terms of the 'MIT license'. The text 00003 of this licence follows... 00004 00005 Copyright (c) 2004-2005 J.D.Medhurst (a.k.a. Tixy) 00006 00007 Permission is hereby granted, free of charge, to any person obtaining a copy 00008 of this software and associated documentation files (the "Software"), to deal 00009 in the Software without restriction, including without limitation the rights 00010 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 00011 copies of the Software, and to permit persons to whom the Software is 00012 furnished to do so, subject to the following conditions: 00013 00014 The above copyright notice and this permission notice shall be included in 00015 all copies or substantial portions of the Software. 00016 00017 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00018 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00019 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 00020 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00021 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00022 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 00023 THE SOFTWARE. 00024 */ 00025 00032 #ifndef FIX_H 00033 #define FIX_H 00034 00111 typedef int32_t fix; 00112 00121 typedef uint32_t ufix; 00122 00145 typedef fix fixangle; 00146 00147 00160 class Fix 00161 { 00162 public: 00183 static fix Add(fix a,fix b); 00184 00205 static fix Sub(fix a,fix b); 00206 00228 static fix Mul(fix a,fix b); 00229 00248 static fix MulNS(fix a,fix b); 00249 00273 static fix Div(fix a,fix b); 00274 00282 static fix Sqrt(ufix a); 00283 00293 static fix Log2(ufix a); 00294 00304 static ufix Exp2(fix a); 00305 00314 static fix Sin(fixangle angle); 00315 00324 static fix Cos(fixangle angle); 00325 00336 static fix Tan(fixangle angle); 00337 00348 static fixangle ASin(fix value); 00349 00360 static fixangle ACos(fix value); 00361 00370 static fixangle ATan(fix value); 00371 00382 static fix Random(uint32_t& seed); 00383 00395 static ufix Random(uint32_t& seed,ufix range); 00396 }; 00397 00398 // End of group 00400 00401 #endif 00402
1.6.1