Luky/Geo/LLTrigonometry.m

00001 //
00002 //  LLTrigonometry.m
00003 //  MacTrek
00004 //
00005 //  Created by Aqua on 29/04/2006.
00006 //  Copyright 2006 Luky Soft. All rights reserved.
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     //return rint((atan2 (deltaY, deltaX)) / pi * 128);
00571     // hmm this is in rad 2pi makes 360 so...
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

Generated on Sat Aug 26 21:14:15 2006 for MacTrek by  doxygen 1.4.7