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.