Math.cpp

Go to the documentation of this file.
00001 /*
00002 SagaEngine library
00003 Copyright (c) 2002-2006 Skalden Studio AS
00004 
00005 This software is provided 'as-is', without any express or implied 
00006 warranty. In no event will the authors be held liable for any 
00007 damages arising from the use of this software.
00008 
00009 Permission is granted to distribute the library under the terms of the 
00010 Q Public License version 1.0. Be sure to read and understand the license
00011 before using the library. It should be included here, or you may read it
00012 at http://www.trolltech.com/products/qt/licenses/licensing/qpl
00013 
00014 The original version of this library can be located at:
00015 http://www.sagaengine.com/
00016 
00017 Rune Myrland
00018 rune@skalden.com
00019 */
00020 
00021 
00022 #include "Math.hpp"
00023 #include <cmath>
00024 
00025 namespace se_core {
00026     /*
00027 
00028     short Math
00029     ::clockwise8Direction(short xp, short yp) {
00030         const static short directions[][3] = {
00031             { 4, 0, 5 },
00032             { 3, 0, 1 },
00033             { 7, 2, 6 }
00034         };
00035 
00036         short ns, ew;
00037         if(xp < -Coor::GRID_RES)
00038             ew = 0;
00039         else if(xp > Coor::GRID_RES)
00040             ew = 2;
00041         else
00042             ew = 1;
00043 
00044         if(yp < -Coor::GRID_RES)
00045             ns = 0;
00046         else if(yp > Coor::GRID_RES)
00047             ns = 2;
00048         else
00049             ns = 1;
00050 
00051         return directions[ ns ] [ ew ];
00052     }
00053 
00054 
00055     const short Math
00056     ::sinesAbs[] = {
00057         0, 201, 401, 602, 802, 1002, 1202, 1400, // 0
00058         1598, 1794, 1990, 2184, 2378, 2569, 2759, 2948,
00059         3134, 3319, 3502, 3683, 3861, 4037, 4211, 4382,
00060         4551, 4717, 4879, 5039, 5196, 5350, 5501, 5648,
00061         5792, 5933, 6069, 6203, 6332, 6458, 6579, 6697, // 32
00062         6811, 6921, 7026, 7127, 7224, 7317, 7405, 7489,
00063         7568, 7643, 7713, 7778, 7839, 7895, 7946, 7992,
00064         8034, 8071, 8103, 8130, 8152, 8169, 8182, 8189,
00065         8192, 8189, 8182, 8169, 8152, 8130, 8103, 8071, // 64
00066         8034, 7992, 7946, 7895, 7839, 7778, 7713, 7643,
00067         7568, 7489, 7405, 7317, 7224, 7127, 7026, 6921,
00068         6811, 6697, 6579, 6458, 6332, 6203, 6069, 5933,
00069         5792, 5648, 5501, 5350, 5196, 5039, 4879, 4717, // 96
00070         4551, 4382, 4211, 4037, 3861, 3683, 3502, 3319,
00071         3134, 2948, 2759, 2569, 2378, 2184, 1990, 1794,
00072         1598, 1400, 1202, 1002, 802, 602, 401, 201,
00073         0, 201, 401, 602, 802, 1002, 1202, 1400, // 128
00074         1598, 1794, 1990, 2184, 2378, 2569, 2759, 2948,
00075         3134, 3319, 3502, 3683, 3861, 4037, 4211, 4382,
00076         4551, 4717, 4879, 5039, 5196, 5350, 5501, 5648,
00077         5792, 5933, 6069, 6203, 6332, 6458, 6579, 6697, // 160
00078         6811, 6921, 7026, 7127, 7224, 7317, 7405, 7489,
00079         7568, 7643, 7713, 7778, 7839, 7895, 7946, 7992,
00080         8034, 8071, 8103, 8130, 8152, 8169, 8182, 8189,
00081         8192, 8189, 8182, 8169, 8152, 8130, 8103, 8071, // 192
00082         8034, 7992, 7946, 7895, 7839, 7778, 7713, 7643,
00083         7568, 7489, 7405, 7317, 7224, 7127, 7026, 6921,
00084         6811, 6697, 6579, 6458, 6332, 6203, 6069, 5933,
00085         5792, 5648, 5501, 5350, 5196, 5039, 4879, 4717, // 224
00086         4551, 4382, 4211, 4037, 3861, 3683, 3502, 3319,
00087         3134, 2948, 2759, 2569, 2378, 2184, 1990, 1794,
00088         1598, 1400, 1202, 1002, 802, 602, 401, 201
00089     };
00090 
00091 
00092     const short Math
00093     ::sinesSign[] = {
00094             1,  1,  1,  1,  1,  1,  1,  1, // 0
00095             1,  1,  1,  1,  1,  1,  1,  1,
00096             1,  1,  1,  1,  1,  1,  1,  1,
00097             1,  1,  1,  1,  1,  1,  1,  1,
00098             1,  1,  1,  1,  1,  1,  1,  1, // 32
00099             1,  1,  1,  1,  1,  1,  1,  1,
00100             1,  1,  1,  1,  1,  1,  1,  1,
00101             1,  1,  1,  1,  1,  1,  1,  1,
00102             1,  1,  1,  1,  1,  1,  1,  1, // 64
00103             1,  1,  1,  1,  1,  1,  1,  1,
00104             1,  1,  1,  1,  1,  1,  1,  1,
00105             1,  1,  1,  1,  1,  1,  1,  1,
00106             1,  1,  1,  1,  1,  1,  1,  1, // 96
00107             1,  1,  1,  1,  1,  1,  1,  1,
00108             1,  1,  1,  1,  1,  1,  1,  1,
00109             1,  1,  1,  1,  1,  1,  1,  1,
00110         -1, -1, -1, -1, -1, -1, -1, -1, // 128
00111         -1, -1, -1, -1, -1, -1, -1, -1,
00112         -1, -1, -1, -1, -1, -1, -1, -1,
00113         -1, -1, -1, -1, -1, -1, -1, -1,
00114         -1, -1, -1, -1, -1, -1, -1, -1, // 160
00115         -1, -1, -1, -1, -1, -1, -1, -1,
00116         -1, -1, -1, -1, -1, -1, -1, -1,
00117         -1, -1, -1, -1, -1, -1, -1, -1,
00118         -1, -1, -1, -1, -1, -1, -1, -1, // 192
00119         -1, -1, -1, -1, -1, -1, -1, -1,
00120         -1, -1, -1, -1, -1, -1, -1, -1,
00121         -1, -1, -1, -1, -1, -1, -1, -1,
00122         -1, -1, -1, -1, -1, -1, -1, -1, // 224
00123         -1, -1, -1, -1, -1, -1, -1, -1,
00124         -1, -1, -1, -1, -1, -1, -1, -1,
00125         -1, -1, -1, -1, -1, -1, -1, -1
00126     };
00127 
00128 
00129     const short Math
00130     ::cosinesAbs[] = {
00131         8192, 8189, 8182, 8169, 8152, 8130, 8103, 8071, // 0
00132         8034, 7992, 7946, 7895, 7839, 7778, 7713, 7643,
00133         7568, 7489, 7405, 7317, 7224, 7127, 7026, 6921,
00134         6811, 6697, 6579, 6458, 6332, 6203, 6069, 5933,
00135         5792, 5648, 5501, 5350, 5196, 5039, 4879, 4717, // 32
00136         4551, 4382, 4211, 4037, 3861, 3683, 3502, 3319,
00137         3134, 2948, 2759, 2569, 2378, 2184, 1990, 1794,
00138         1598, 1400, 1202, 1002, 802, 602, 401, 201,
00139         0, 201, 401, 602, 802, 1002, 1202, 1400, // 64
00140         1598, 1794, 1990, 2184, 2378, 2569, 2759, 2948,
00141         3134, 3319, 3502, 3683, 3861, 4037, 4211, 4382,
00142         4551, 4717, 4879, 5039, 5196, 5350, 5501, 5648,
00143         5792, 5933, 6069, 6203, 6332, 6458, 6579, 6697, // 96
00144         6811, 6921, 7026, 7127, 7224, 7317, 7405, 7489,
00145         7568, 7643, 7713, 7778, 7839, 7895, 7946, 7992,
00146         8034, 8071, 8103, 8130, 8152, 8169, 8182, 8189,
00147         8192, 8189, 8182, 8169, 8152, 8130, 8103, 8071, // 128
00148         8034, 7992, 7946, 7895, 7839, 7778, 7713, 7643,
00149         7568, 7489, 7405, 7317, 7224, 7127, 7026, 6921,
00150         6811, 6697, 6579, 6458, 6332, 6203, 6069, 5933,
00151         5792, 5648, 5501, 5350, 5196, 5039, 4879, 4717, // 160
00152         4551, 4382, 4211, 4037, 3861, 3683, 3502, 3319,
00153         3134, 2948, 2759, 2569, 2378, 2184, 1990, 1794,
00154         1598, 1400, 1202, 1002, 802, 602, 401, 201,
00155         0, 201, 401, 602, 802, 1002, 1202, 1400, // 192
00156         1598, 1794, 1990, 2184, 2378, 2569, 2759, 2948,
00157         3134, 3319, 3502, 3683, 3861, 4037, 4211, 4382,
00158         4551, 4717, 4879, 5039, 5196, 5350, 5501, 5648,
00159         5792, 5933, 6069, 6203, 6332, 6458, 6579, 6697, // 224
00160         6811, 6921, 7026, 7127, 7224, 7317, 7405, 7489,
00161         7568, 7643, 7713, 7778, 7839, 7895, 7946, 7992,
00162         8034, 8071, 8103, 8130, 8152, 8169, 8182, 8189
00163     };
00164 
00165 
00166     const short Math
00167     ::cosinesSign[] = {
00168         1,  1,  1,  1,  1,  1,  1,  1, // 0
00169         1,  1,  1,  1,  1,  1,  1,  1,
00170         1,  1,  1,  1,  1,  1,  1,  1,
00171         1,  1,  1,  1,  1,  1,  1,  1,
00172         1,  1,  1,  1,  1,  1,  1,  1, // 32
00173         1,  1,  1,  1,  1,  1,  1,  1,
00174         1,  1,  1,  1,  1,  1,  1,  1,
00175         1,  1,  1,  1,  1,  1,  1,  1,
00176         1, -1, -1, -1, -1, -1, -1, -1, // 64
00177         -1, -1, -1, -1, -1, -1, -1, -1,
00178         -1, -1, -1, -1, -1, -1, -1, -1,
00179         -1, -1, -1, -1, -1, -1, -1, -1,
00180         -1, -1, -1, -1, -1, -1, -1, -1, // 96
00181         -1, -1, -1, -1, -1, -1, -1, -1,
00182         -1, -1, -1, -1, -1, -1, -1, -1,
00183         -1, -1, -1, -1, -1, -1, -1, -1,
00184         -1, -1, -1, -1, -1, -1, -1, -1, // 128
00185         -1, -1, -1, -1, -1, -1, -1, -1,
00186         -1, -1, -1, -1, -1, -1, -1, -1,
00187         -1, -1, -1, -1, -1, -1, -1, -1,
00188         -1, -1, -1, -1, -1, -1, -1, -1, // 160
00189         -1, -1, -1, -1, -1, -1, -1, -1,
00190         -1, -1, -1, -1, -1, -1, -1, -1,
00191         -1, -1, -1, -1, -1, -1, -1, -1,
00192         -1,  1,  1,  1,  1,  1,  1,  1, // 192
00193         1,  1,  1,  1,  1,  1,  1,  1,
00194         1,  1,  1,  1,  1,  1,  1,  1,
00195         1,  1,  1,  1,  1,  1,  1,  1,
00196         1,  1,  1,  1,  1,  1,  1,  1, // 224
00197         1,  1,  1,  1,  1,  1,  1,  1,
00198         1,  1,  1,  1,  1,  1,  1,  1,
00199         1,  1,  1,  1,  1,  1,  1,  1
00200     };
00201 
00202 
00203     const int Math
00204     ::tangents[] = {
00205         0, 12, 25, 37, 50, 63, 75, 88, // 0
00206         101, 114, 128, 141, 155, 169, 183, 197,
00207         212, 226, 242, 257, 273, 290, 306, 324,
00208         342, 360, 379, 399, 420, 441, 464, 487,
00209         511, 537, 564, 593, 623, 656, 690, 726, // 32
00210         766, 808, 854, 903, 957, 1017, 1082, 1155,
00211         1236, 1327, 1430, 1549, 1687, 1850, 2044, 2280,
00212         2573, 2950, 3451, 4151, 5198, 6941, 10421, 20856,
00213         //8.36159454883603e+18,
00214         0x7fffffff, -20856, -10421, -6941, -5198, -4151, -3451, -2950, // 64
00215         -2573, -2280, -2044, -1850, -1687, -1549, -1430, -1327,
00216         -1236, -1155, -1082, -1017, -957, -903, -854, -808,
00217         -766, -726, -690, -656, -623, -593, -564, -537,
00218         -512, -487, -464, -441, -420, -399, -379, -360, // 96
00219         -342, -324, -306, -290, -273, -257, -242, -226,
00220         -212, -197, -183, -169, -155, -141, -128, -114,
00221         -101, -88, -75, -63, -50, -37, -25, -12,
00222         0, 12, 25, 37, 50, 63, 75, 88, // 128
00223         101, 114, 128, 141, 155, 169, 183, 197,
00224         212, 226, 242, 257, 273, 290, 306, 324,
00225         342, 360, 379, 399, 420, 441, 464, 487,
00226         511, 537, 564, 593, 623, 656, 690, 726, // 160
00227         766, 808, 854, 903, 957, 1017, 1082, 1155,
00228         1236, 1327, 1430, 1549, 1687, 1850, 2044, 2280,
00229         2573, 2950, 3451, 4151, 5198, 6941, 10421, 20856,
00230         //2.78719818294534e+18
00231         0x7fffffff, -20856, -10421, -6941, -5198, -4151, -3451, -2950, // 192
00232         -2573, -2280, -2044, -1850, -1687, -1549, -1430, -1327,
00233         -1236, -1155, -1082, -1017, -957, -903, -854, -808,
00234         -766, -726, -690, -656, -623, -593, -564, -537,
00235         -512, -487, -464, -441, -420, -399, -379, -360, // 224
00236         -342, -324, -306, -290, -273, -257, -242, -226,
00237         -212, -197, -183, -169, -155, -141, -128, -114,
00238         -101, -88, -75, -63, -50, -37, -25, -12
00239     };
00240     */
00241 
00242 }
00243 

Home Page | SagaEngine trunk (updated nightly) reference generated Sun Dec 2 20:06:12 2007 by Doxygen version 1.3.9.1.

SourceForge.net Logo