00001
00002
00003
00004
00005
00006
00007
00008
00009 #import "LLTrigonometry.h"
00010
00011
00012 @implementation LLTrigonometry
00013
00014 double Sin =
00015 {
00016 -1.0000,
00017 -0.9997,
00018 -0.9988,
00019 -0.9973,
00020 -0.9952,
00021 -0.9925,
00022 -0.9892,
00023 -0.9853,
00024 -0.9808,
00025 -0.9757,
00026 -0.9701,
00027 -0.9638,
00028 -0.9570,
00029 -0.9496,
00030 -0.9416,
00031 -0.9330,
00032 -0.9239,
00033 -0.9143,
00034 -0.9040,
00035 -0.8933,
00036 -0.8820,
00037 -0.8701,
00038 -0.8578,
00039 -0.8449,
00040 -0.8315,
00041 -0.8176,
00042 -0.8033,
00043 -0.7884,
00044 -0.7731,
00045 -0.7573,
00046 -0.7410,
00047 -0.7243,
00048 -0.7072,
00049 -0.6896,
00050 -0.6716,
00051 -0.6533,
00052 -0.6345,
00053 -0.6153,
00054 -0.5958,
00055 -0.5759,
00056 -0.5557,
00057 -0.5351,
00058 -0.5142,
00059 -0.4930,
00060 -0.4715,
00061 -0.4497,
00062 -0.4277,
00063 -0.4054,
00064 -0.3828,
00065 -0.3600,
00066 -0.3370,
00067 -0.3138,
00068 -0.2904,
00069 -0.2668,
00070 -0.2431,
00071 -0.2192,
00072 -0.1952,
00073 -0.1711,
00074 -0.1469,
00075 -0.1225,
00076 -0.0982,
00077 -0.0737,
00078 -0.0492,
00079 -0.0247,
00080 -0.0001,
00081 0.0244,
00082 0.0489,
00083 0.0734,
00084 0.0979,
00085 0.1223,
00086 0.1466,
00087 0.1708,
00088 0.1949,
00089 0.2190,
00090 0.2428,
00091 0.2666,
00092 0.2901,
00093 0.3135,
00094 0.3367,
00095 0.3598,
00096 0.3825,
00097 0.4051,
00098 0.4274,
00099 0.4495,
00100 0.4713,
00101 0.4928,
00102 0.5140,
00103 0.5349,
00104 0.5554,
00105 0.5757,
00106 0.5956,
00107 0.6151,
00108 0.6343,
00109 0.6531,
00110 0.6714,
00111 0.6894,
00112 0.7070,
00113 0.7241,
00114 0.7408,
00115 0.7571,
00116 0.7729,
00117 0.7882,
00118 0.8031,
00119 0.8175,
00120 0.8314,
00121 0.8448,
00122 0.8576,
00123 0.8700,
00124 0.8818,
00125 0.8931,
00126 0.9039,
00127 0.9141,
00128 0.9238,
00129 0.9329,
00130 0.9415,
00131 0.9495,
00132 0.9569,
00133 0.9637,
00134 0.9700,
00135 0.9757,
00136 0.9808,
00137 0.9852,
00138 0.9891,
00139 0.9925,
00140 0.9952,
00141 0.9973,
00142 0.9988,
00143 0.9997,
00144 1.0000,
00145 0.9997,
00146 0.9988,
00147 0.9973,
00148 0.9952,
00149 0.9925,
00150 0.9892,
00151 0.9853,
00152 0.9808,
00153 0.9757,
00154 0.9700,
00155 0.9638,
00156 0.9569,
00157 0.9495,
00158 0.9415,
00159 0.9330,
00160 0.9239,
00161 0.9142,
00162 0.9040,
00163 0.8932,
00164 0.8819,
00165 0.8701,
00166 0.8577,
00167 0.8449,
00168 0.8315,
00169 0.8176,
00170 0.8032,
00171 0.7884,
00172 0.7730,
00173 0.7572,
00174 0.7410,
00175 0.7243,
00176 0.7071,
00177 0.6896,
00178 0.6716,
00179 0.6532,
00180 0.6344,
00181 0.6153,
00182 0.5957,
00183 0.5758,
00184 0.5556,
00185 0.5350,
00186 0.5141,
00187 0.4929,
00188 0.4714,
00189 0.4496,
00190 0.4276,
00191 0.4053,
00192 0.3827,
00193 0.3599,
00194 0.3369,
00195 0.3137,
00196 0.2903,
00197 0.2667,
00198 0.2430,
00199 0.2191,
00200 0.1951,
00201 0.1710,
00202 0.1468,
00203 0.1225,
00204 0.0981,
00205 0.0736,
00206 0.0491,
00207 0.0246,
00208 0.0000,
00209 -0.0245,
00210 -0.0490,
00211 -0.0735,
00212 -0.0980,
00213 -0.1224,
00214 -0.1467,
00215 -0.1709,
00216 -0.1950,
00217 -0.2190,
00218 -0.2429,
00219 -0.2667,
00220 -0.2902,
00221 -0.3136,
00222 -0.3368,
00223 -0.3598,
00224 -0.3826,
00225 -0.4052,
00226 -0.4275,
00227 -0.4496,
00228 -0.4713,
00229 -0.4928,
00230 -0.5140,
00231 -0.5349,
00232 -0.5555,
00233 -0.5758,
00234 -0.5956,
00235 -0.6152,
00236 -0.6343,
00237 -0.6531,
00238 -0.6715,
00239 -0.6895,
00240 -0.7071,
00241 -0.7242,
00242 -0.7409,
00243 -0.7572,
00244 -0.7730,
00245 -0.7883,
00246 -0.8032,
00247 -0.8175,
00248 -0.8314,
00249 -0.8448,
00250 -0.8577,
00251 -0.8700,
00252 -0.8819,
00253 -0.8932,
00254 -0.9040,
00255 -0.9142,
00256 -0.9238,
00257 -0.9330,
00258 -0.9415,
00259 -0.9495,
00260 -0.9569,
00261 -0.9638,
00262 -0.9700,
00263 -0.9757,
00264 -0.9808,
00265 -0.9853,
00266 -0.9892,
00267 -0.9925,
00268 -0.9952,
00269 -0.9973,
00270 -0.9988,
00271 -0.9997
00272 };
00273 double Cos =
00274 {
00275 0.0000,
00276 0.0245,
00277 0.0491,
00278 0.0736,
00279 0.0980,
00280 0.1224,
00281 0.1467,
00282 0.1710,
00283 0.1951,
00284 0.2191,
00285 0.2430,
00286 0.2667,
00287 0.2903,
00288 0.3137,
00289 0.3369,
00290 0.3599,
00291 0.3827,
00292 0.4052,
00293 0.4275,
00294 0.4496,
00295 0.4714,
00296 0.4929,
00297 0.5141,
00298 0.5350,
00299 0.5556,
00300 0.5758,
00301 0.5957,
00302 0.6152,
00303 0.6344,
00304 0.6532,
00305 0.6715,
00306 0.6895,
00307 0.7071,
00308 0.7242,
00309 0.7409,
00310 0.7572,
00311 0.7730,
00312 0.7883,
00313 0.8032,
00314 0.8176,
00315 0.8315,
00316 0.8448,
00317 0.8577,
00318 0.8701,
00319 0.8819,
00320 0.8932,
00321 0.9040,
00322 0.9142,
00323 0.9239,
00324 0.9330,
00325 0.9415,
00326 0.9495,
00327 0.9569,
00328 0.9638,
00329 0.9700,
00330 0.9757,
00331 0.9808,
00332 0.9853,
00333 0.9892,
00334 0.9925,
00335 0.9952,
00336 0.9973,
00337 0.9988,
00338 0.9997,
00339 1.0000,
00340 0.9997,
00341 0.9988,
00342 0.9973,
00343 0.9952,
00344 0.9925,
00345 0.9892,
00346 0.9853,
00347 0.9808,
00348 0.9757,
00349 0.9700,
00350 0.9638,
00351 0.9570,
00352 0.9495,
00353 0.9416,
00354 0.9330,
00355 0.9239,
00356 0.9142,
00357 0.9040,
00358 0.8933,
00359 0.8819,
00360 0.8701,
00361 0.8578,
00362 0.8449,
00363 0.8315,
00364 0.8176,
00365 0.8032,
00366 0.7884,
00367 0.7731,
00368 0.7573,
00369 0.7410,
00370 0.7243,
00371 0.7072,
00372 0.6896,
00373 0.6716,
00374 0.6532,
00375 0.6344,
00376 0.6153,
00377 0.5958,
00378 0.5759,
00379 0.5556,
00380 0.5351,
00381 0.5142,
00382 0.4930,
00383 0.4715,
00384 0.4497,
00385 0.4276,
00386 0.4053,
00387 0.3828,
00388 0.3600,
00389 0.3370,
00390 0.3138,
00391 0.2904,
00392 0.2668,
00393 0.2431,
00394 0.2192,
00395 0.1952,
00396 0.1710,
00397 0.1468,
00398 0.1225,
00399 0.0981,
00400 0.0737,
00401 0.0492,
00402 0.0246,
00403 0.0001,
00404 -0.0244,
00405 -0.0490,
00406 -0.0735,
00407 -0.0979,
00408 -0.1223,
00409 -0.1466,
00410 -0.1709,
00411 -0.1950,
00412 -0.2190,
00413 -0.2429,
00414 -0.2666,
00415 -0.2902,
00416 -0.3136,
00417 -0.3368,
00418 -0.3598,
00419 -0.3826,
00420 -0.4051,
00421 -0.4275,
00422 -0.4495,
00423 -0.4713,
00424 -0.4928,
00425 -0.5140,
00426 -0.5349,
00427 -0.5555,
00428 -0.5757,
00429 -0.5956,
00430 -0.6151,
00431 -0.6343,
00432 -0.6531,
00433 -0.6715,
00434 -0.6895,
00435 -0.7070,
00436 -0.7242,
00437 -0.7409,
00438 -0.7571,
00439 -0.7729,
00440 -0.7883,
00441 -0.8031,
00442 -0.8175,
00443 -0.8314,
00444 -0.8448,
00445 -0.8577,
00446 -0.8700,
00447 -0.8819,
00448 -0.8932,
00449 -0.9039,
00450 -0.9142,
00451 -0.9238,
00452 -0.9329,
00453 -0.9415,
00454 -0.9495,
00455 -0.9569,
00456 -0.9637,
00457 -0.9700,
00458 -0.9757,
00459 -0.9808,
00460 -0.9853,
00461 -0.9892,
00462 -0.9925,
00463 -0.9952,
00464 -0.9973,
00465 -0.9988,
00466 -0.9997,
00467 -1.0000,
00468 -0.9997,
00469 -0.9988,
00470 -0.9973,
00471 -0.9952,
00472 -0.9925,
00473 -0.9892,
00474 -0.9853,
00475 -0.9808,
00476 -0.9757,
00477 -0.9701,
00478 -0.9638,
00479 -0.9570,
00480 -0.9496,
00481 -0.9416,
00482 -0.9330,
00483 -0.9239,
00484 -0.9143,
00485 -0.9041,
00486 -0.8933,
00487 -0.8820,
00488 -0.8702,
00489 -0.8578,
00490 -0.8449,
00491 -0.8316,
00492 -0.8177,
00493 -0.8033,
00494 -0.7884,
00495 -0.7731,
00496 -0.7573,
00497 -0.7411,
00498 -0.7244,
00499 -0.7072,
00500 -0.6897,
00501 -0.6717,
00502 -0.6533,
00503 -0.6345,
00504 -0.6154,
00505 -0.5958,
00506 -0.5759,
00507 -0.5557,
00508 -0.5351,
00509 -0.5142,
00510 -0.4930,
00511 -0.4715,
00512 -0.4498,
00513 -0.4277,
00514 -0.4054,
00515 -0.3828,
00516 -0.3601,
00517 -0.3371,
00518 -0.3138,
00519 -0.2905,
00520 -0.2669,
00521 -0.2432,
00522 -0.2193,
00523 -0.1953,
00524 -0.1711,
00525 -0.1469,
00526 -0.1226,
00527 -0.0982,
00528 -0.0737,
00529 -0.0493,
00530 -0.0247
00531 };
00532
00533
00534 LLTrigonometry *defaultInstance;
00535
00536 - (id) init {
00537 self = [super init];
00538 if (self != nil) {
00539 defaultInstance = nil;
00540 }
00541 return self;
00542 }
00543
00544
00545 + (LLTrigonometry*) defaultInstance {
00546
00547 if (defaultInstance == nil) {
00548 defaultInstance = [[LLTrigonometry alloc] init];
00549 }
00550 return defaultInstance;
00551 }
00552
00557 - (int)hypotOfBase:(int) x1 heigth:(int)y1 {
00558
00559 int x2 = x1 >= 0 ? x1 : -x1;
00560 int y2 = y1 >= 0 ? y1 : -y1;
00561
00562 return (x2 + y2 - (((x2 > y2) ? y2 : x2) >> 1));
00563 }
00564
00565 - (float)angleDegBetween:(NSPoint)p1 andPoint:(NSPoint)p2 {
00566
00567 int deltaX = p2.x - p1.x;
00568 int deltaY = p2.y - p1.y;
00569
00570
00571
00572 return (atan2f (deltaY, deltaX)) / pi * 180;
00573 }
00574
00575 - (double) sin:(int) i {
00576 if ((i < 0) && (i > 255)) {
00577 return 1;
00578 }
00579 return Sin;
00580 }
00581
00582 - (double) cos:(int) i {
00583 if ((i < 0) ||(i > 255)) {
00584 return 0;
00585 }
00586 return Cos;
00587 }
00588
00589 - (int) cosLength {
00590 return 255;
00591 }
00592
00593 - (int) sinLength {
00594 return 255;
00595 }
00596
00597 - (bool) rect:(NSRect) r1 isEqualToRect:(NSRect) r2 {
00598 if ((r1.size.width == r2.size.width) &&
00599 (r1.size.height == r2.size.height) &&
00600 (r1.origin.x == r2.origin.x) &&
00601 (r1.origin.y == r2.origin.y)) {
00602 return YES;
00603 }
00604 return NO;
00605 }
00606
00607 @end