From edf64afc3b347397a8be136b638ae75a24f09256 Mon Sep 17 00:00:00 2001 From: charras Date: Thu, 4 Feb 2010 17:46:12 +0000 Subject: [PATCH] Eeschema: Added patch from Torsten Huter addeing hotkeys and enhancements in libeditor Some fixes. --- common/trigo.cpp | 2937 +++++++++++++++-------------- eeschema/block.cpp | 4 + eeschema/classes_body_items.cpp | 81 +- eeschema/classes_body_items.h | 6 +- eeschema/eeschema_id.h | 391 ++-- eeschema/hotkeys.cpp | 360 ++-- eeschema/hotkeys.h | 6 +- eeschema/libedit_onleftclick.cpp | 4 +- eeschema/libedit_onrightclick.cpp | 70 +- eeschema/libeditfrm.h | 519 ++--- eeschema/libframe.cpp | 245 +-- eeschema/onrightclick.cpp | 28 +- eeschema/symbdraw.cpp | 653 +++++-- include/trigo.h | 32 + 14 files changed, 2996 insertions(+), 2340 deletions(-) diff --git a/common/trigo.cpp b/common/trigo.cpp index 324d5c288f..fe51d0ffc6 100644 --- a/common/trigo.cpp +++ b/common/trigo.cpp @@ -67,13 +67,13 @@ bool DistanceTest( int seuil, int dx, int dy, int spot_cX, int spot_cY ) if( ( pointX < 0 ) && ( pointX >= -seuil ) ) { if( ( ( pointX * pointX ) + ( pointY * pointY ) ) - <= ( seuil * seuil ) ) + <= ( seuil * seuil ) ) return true; } if( ( pointX > segX ) && ( pointX <= ( segX + seuil ) ) ) { if( ( ( ( pointX - segX ) * ( pointX - segX ) ) - + ( pointY * pointY ) ) <= ( seuil * seuil ) ) + + ( pointY * pointY ) ) <= ( seuil * seuil ) ) return true; } } @@ -87,13 +87,13 @@ bool DistanceTest( int seuil, int dx, int dy, int spot_cX, int spot_cY ) if( ( pointY < 0 ) && ( pointY >= -seuil ) ) { if( ( ( pointY * pointY ) + ( pointX * pointX ) ) - <= ( seuil * seuil ) ) + <= ( seuil * seuil ) ) return true; } if( ( pointY > segY ) && ( pointY <= ( segY + seuil ) ) ) { if( ( ( ( pointY - segY ) * ( pointY - segY ) ) - + ( pointX * pointX ) ) <= ( seuil * seuil ) ) + + ( pointX * pointX ) ) <= ( seuil * seuil ) ) return true; } } @@ -133,13 +133,13 @@ bool DistanceTest( int seuil, int dx, int dy, int spot_cX, int spot_cY ) if( ( cXrot < 0 ) && ( cXrot >= -seuil ) ) { if( ( ( cXrot * cXrot ) + ( cYrot * cYrot ) ) - <= ( seuil * seuil ) ) + <= ( seuil * seuil ) ) return true; } if( ( cXrot > segX ) && ( cXrot <= ( segX + seuil ) ) ) { if( ( ( ( cXrot - segX ) * ( cXrot - segX ) ) - + ( cYrot * cYrot ) ) <= ( seuil * seuil ) ) + + ( cYrot * cYrot ) ) <= ( seuil * seuil ) ) return true; } } @@ -152,12 +152,12 @@ bool DistanceTest( int seuil, int dx, int dy, int spot_cX, int spot_cY ) int angle; angle = wxRound( ( atan2( (double) segY, - (double) segX ) * 1800.0 / M_PI ) ); + (double) segX ) * 1800.0 / M_PI ) ); cXrot = pointX; cYrot = pointY; - RotatePoint( &cXrot, &cYrot, angle ); /* Rotate the point to be tested */ - RotatePoint( &segX, &segY, angle ); /* Rotate the segment */ + RotatePoint( &cXrot, &cYrot, angle ); /* Rotate the point to be tested */ + RotatePoint( &segX, &segY, angle ); /* Rotate the segment */ /* The track is horizontal, following the amendments to coordinate * axis and, therefore segX = length of segment @@ -170,13 +170,13 @@ bool DistanceTest( int seuil, int dx, int dy, int spot_cX, int spot_cY ) if( ( cXrot < 0 ) && ( cXrot >= -seuil ) ) { if( ( ( cXrot * cXrot ) + ( cYrot * cYrot ) ) - <= ( seuil * seuil ) ) + <= ( seuil * seuil ) ) return true; } if( ( cXrot > segX ) && ( cXrot <= ( segX + seuil ) ) ) { if( ( ( ( cXrot - segX ) * ( cXrot - segX ) ) - + ( cYrot * cYrot ) ) <= ( seuil * seuil ) ) + + ( cYrot * cYrot ) ) <= ( seuil * seuil ) ) return true; } } @@ -388,1452 +388,1487 @@ void RotatePoint( double* pX, double* pY, int angle ) } +double EuclideanNorm( wxPoint vector ) +{ + return sqrt( (double) vector.x * (double) vector.x + (double) vector.y * (double) vector.y ); +} + + +wxPoint TwoPointVector( wxPoint startPoint, wxPoint endPoint ) +{ + return endPoint - startPoint; +} + + +double DistanceLinePoint( wxPoint linePointA, wxPoint linePointB, wxPoint referencePoint ) +{ + return fabs( (linePointB.x - linePointA.x) * (linePointA.y - referencePoint.y) - + (linePointA.x - referencePoint.x ) * (linePointB.y - linePointA.y) ) + / EuclideanNorm( TwoPointVector( linePointA, linePointB ) ); +} + + +bool HitTestPoints( wxPoint pointA, wxPoint pointB, double threshold ) +{ + wxPoint vectorAB = TwoPointVector( pointA, pointB ); + double distance = EuclideanNorm( vectorAB ); + + return distance < threshold; +} + + +int CrossProduct( wxPoint vectorA, wxPoint vectorB ) +{ + return vectorA.x * vectorB.y - vectorA.y * vectorB.x; +} + + double fsinus[3600] = { - 0.0000000000, 0.0017453284, 0.0034906514, 0.0052359638, - 0.0069812603, 0.0087265355, 0.0104717841, 0.0122170008, 0.0139621803, - 0.0157073173, 0.0174524064, 0.0191974424, 0.0209424199, 0.0226873336, - 0.0244321782, 0.0261769483, 0.0279216387, 0.0296662441, 0.0314107591, - 0.0331551784, 0.0348994967, 0.0366437087, 0.0383878091, 0.0401317925, - 0.0418756537, 0.0436193874, 0.0453629881, 0.0471064507, 0.0488497698, - 0.0505929401, 0.0523359562, 0.0540788130, 0.0558215050, 0.0575640270, - 0.0593063736, 0.0610485395, 0.0627905195, 0.0645323083, 0.0662739004, - 0.0680152907, 0.0697564737, 0.0714974443, 0.0732381971, 0.0749787268, - 0.0767190281, 0.0784590957, 0.0801989243, 0.0819385086, 0.0836778433, - 0.0854169231, 0.0871557427, 0.0888942969, 0.0906325802, 0.0923705874, - 0.0941083133, 0.0958457525, 0.0975828998, 0.0993197497, 0.1010562972, - 0.1027925368, 0.1045284633, 0.1062640713, 0.1079993557, 0.1097343111, - 0.1114689322, 0.1132032138, 0.1149371505, 0.1166707371, 0.1184039683, - 0.1201368388, 0.1218693434, 0.1236014767, 0.1253332336, 0.1270646086, - 0.1287955966, 0.1305261922, 0.1322563903, 0.1339861854, 0.1357155724, - 0.1374445460, 0.1391731010, 0.1409012319, 0.1426289337, 0.1443562010, - 0.1460830286, 0.1478094111, 0.1495353434, 0.1512608202, 0.1529858363, - 0.1547103863, 0.1564344650, 0.1581580673, 0.1598811877, 0.1616038211, - 0.1633259622, 0.1650476059, 0.1667687467, 0.1684893796, 0.1702094992, - 0.1719291003, 0.1736481777, 0.1753667261, 0.1770847403, 0.1788022151, - 0.1805191453, 0.1822355255, 0.1839513506, 0.1856666154, 0.1873813146, - 0.1890954430, 0.1908089954, 0.1925219665, 0.1942343512, 0.1959461442, - 0.1976573404, 0.1993679344, 0.2010779211, 0.2027872954, 0.2044960518, - 0.2062041854, 0.2079116908, 0.2096185629, 0.2113247965, 0.2130303863, - 0.2147353272, 0.2164396139, 0.2181432414, 0.2198462044, 0.2215484976, - 0.2232501160, 0.2249510543, 0.2266513074, 0.2283508701, 0.2300497372, - 0.2317479035, 0.2334453639, 0.2351421131, 0.2368381461, 0.2385334576, - 0.2402280425, 0.2419218956, 0.2436150118, 0.2453073859, 0.2469990127, - 0.2486898872, 0.2503800041, 0.2520693582, 0.2537579446, 0.2554457579, - 0.2571327932, 0.2588190451, 0.2605045086, 0.2621891786, 0.2638730500, - 0.2655561175, 0.2672383761, 0.2689198206, 0.2706004460, 0.2722802470, - 0.2739592187, 0.2756373558, 0.2773146533, 0.2789911060, 0.2806667089, - 0.2823414568, 0.2840153447, 0.2856883674, 0.2873605198, 0.2890317969, - 0.2907021936, 0.2923717047, 0.2940403252, 0.2957080500, 0.2973748741, - 0.2990407923, 0.3007057995, 0.3023698908, 0.3040330609, 0.3056953050, - 0.3073566178, 0.3090169944, 0.3106764296, 0.3123349185, 0.3139924560, - 0.3156490369, 0.3173046564, 0.3189593093, 0.3206129906, 0.3222656952, - 0.3239174182, 0.3255681545, 0.3272178990, 0.3288666467, 0.3305143927, - 0.3321611319, 0.3338068592, 0.3354515698, 0.3370952584, 0.3387379202, - 0.3403795502, 0.3420201433, 0.3436596946, 0.3452981990, 0.3469356516, - 0.3485720473, 0.3502073813, 0.3518416484, 0.3534748438, 0.3551069624, - 0.3567379993, 0.3583679495, 0.3599968081, 0.3616245701, 0.3632512305, - 0.3648767843, 0.3665012267, 0.3681245527, 0.3697467573, 0.3713678356, - 0.3729877826, 0.3746065934, 0.3762242631, 0.3778407868, 0.3794561595, - 0.3810703764, 0.3826834324, 0.3842953227, 0.3859060423, 0.3875155865, - 0.3891239501, 0.3907311285, 0.3923371166, 0.3939419096, 0.3955455026, - 0.3971478906, 0.3987490689, 0.4003490326, 0.4019477767, 0.4035452964, - 0.4051415868, 0.4067366431, 0.4083304604, 0.4099230338, 0.4115143586, - 0.4131044298, 0.4146932427, 0.4162807923, 0.4178670738, 0.4194520824, - 0.4210358134, 0.4226182617, 0.4241994227, 0.4257792916, 0.4273578634, - 0.4289351334, 0.4305110968, 0.4320857488, 0.4336590846, 0.4352310994, - 0.4368017884, 0.4383711468, 0.4399391699, 0.4415058528, 0.4430711908, - 0.4446351792, 0.4461978131, 0.4477590878, 0.4493189986, 0.4508775407, - 0.4524347093, 0.4539904997, 0.4555449072, 0.4570979271, 0.4586495545, - 0.4601997848, 0.4617486132, 0.4632960351, 0.4648420457, 0.4663866403, - 0.4679298143, 0.4694715628, 0.4710118812, 0.4725507649, 0.4740882090, - 0.4756242091, 0.4771587603, 0.4786918579, 0.4802234974, 0.4817536741, - 0.4832823833, 0.4848096202, 0.4863353804, 0.4878596591, 0.4893824517, - 0.4909037536, 0.4924235601, 0.4939418666, 0.4954586684, 0.4969739610, - 0.4984877398, 0.5000000000, 0.5015107372, 0.5030199466, 0.5045276238, - 0.5060337641, 0.5075383630, 0.5090414158, 0.5105429179, 0.5120428649, - 0.5135412521, 0.5150380749, 0.5165333289, 0.5180270094, 0.5195191119, - 0.5210096318, 0.5224985647, 0.5239859060, 0.5254716511, 0.5269557955, - 0.5284383347, 0.5299192642, 0.5313985795, 0.5328762761, 0.5343523494, - 0.5358267950, 0.5372996083, 0.5387707850, 0.5402403205, 0.5417082103, - 0.5431744500, 0.5446390350, 0.5461019610, 0.5475632235, 0.5490228180, - 0.5504807401, 0.5519369853, 0.5533915492, 0.5548444274, 0.5562956155, - 0.5577451090, 0.5591929035, 0.5606389946, 0.5620833779, 0.5635260489, - 0.5649670034, 0.5664062369, 0.5678437451, 0.5692795234, 0.5707135677, - 0.5721458734, 0.5735764364, 0.5750052520, 0.5764323162, 0.5778576244, - 0.5792811723, 0.5807029557, 0.5821229702, 0.5835412114, 0.5849576750, - 0.5863723567, 0.5877852523, 0.5891963574, 0.5906056676, 0.5920131788, - 0.5934188866, 0.5948227868, 0.5962248750, 0.5976251470, 0.5990235985, - 0.6004202253, 0.6018150232, 0.6032079877, 0.6045991149, 0.6059884003, - 0.6073758397, 0.6087614290, 0.6101451639, 0.6115270402, 0.6129070537, - 0.6142852001, 0.6156614753, 0.6170358751, 0.6184083954, 0.6197790318, - 0.6211477803, 0.6225146366, 0.6238795967, 0.6252426563, 0.6266038114, - 0.6279630576, 0.6293203910, 0.6306758074, 0.6320293027, 0.6333808726, - 0.6347305132, 0.6360782203, 0.6374239897, 0.6387678175, 0.6401096995, - 0.6414496316, 0.6427876097, 0.6441236298, 0.6454576877, 0.6467897795, - 0.6481199011, 0.6494480483, 0.6507742173, 0.6520984038, 0.6534206040, - 0.6547408137, 0.6560590290, 0.6573752458, 0.6586894601, 0.6600016680, - 0.6613118653, 0.6626200482, 0.6639262127, 0.6652303547, 0.6665324702, - 0.6678325555, 0.6691306064, 0.6704266190, 0.6717205893, 0.6730125135, - 0.6743023876, 0.6755902076, 0.6768759697, 0.6781596699, 0.6794413043, - 0.6807208690, 0.6819983601, 0.6832737737, 0.6845471059, 0.6858183529, - 0.6870875108, 0.6883545757, 0.6896195437, 0.6908824111, 0.6921431739, - 0.6934018283, 0.6946583705, 0.6959127966, 0.6971651029, 0.6984152854, - 0.6996633405, 0.7009092643, 0.7021530530, 0.7033947028, 0.7046342100, - 0.7058715707, 0.7071067812, 0.7083398377, 0.7095707365, 0.7107994739, - 0.7120260460, 0.7132504492, 0.7144726796, 0.7156927337, 0.7169106077, - 0.7181262978, 0.7193398003, 0.7205511117, 0.7217602281, 0.7229671459, - 0.7241718614, 0.7253743710, 0.7265746710, 0.7277727577, 0.7289686274, - 0.7301622766, 0.7313537016, 0.7325428988, 0.7337298645, 0.7349145951, - 0.7360970871, 0.7372773368, 0.7384553406, 0.7396310950, 0.7408045963, - 0.7419758410, 0.7431448255, 0.7443115462, 0.7454759997, 0.7466381823, - 0.7477980905, 0.7489557208, 0.7501110696, 0.7512641335, 0.7524149089, - 0.7535633923, 0.7547095802, 0.7558534692, 0.7569950557, 0.7581343362, - 0.7592713073, 0.7604059656, 0.7615383075, 0.7626683297, 0.7637960286, - 0.7649214009, 0.7660444431, 0.7671651518, 0.7682835236, 0.7693995550, - 0.7705132428, 0.7716245834, 0.7727335735, 0.7738402097, 0.7749444887, - 0.7760464071, 0.7771459615, 0.7782431485, 0.7793379649, 0.7804304073, - 0.7815204724, 0.7826081569, 0.7836934573, 0.7847763705, 0.7858568932, - 0.7869350220, 0.7880107536, 0.7890840848, 0.7901550124, 0.7912235330, - 0.7922896434, 0.7933533403, 0.7944146205, 0.7954734809, 0.7965299180, - 0.7975839288, 0.7986355100, 0.7996846585, 0.8007313709, 0.8017756442, - 0.8028174752, 0.8038568606, 0.8048937974, 0.8059282822, 0.8069603121, - 0.8079898839, 0.8090169944, 0.8100416404, 0.8110638190, 0.8120835269, - 0.8131007610, 0.8141155184, 0.8151277957, 0.8161375901, 0.8171448983, - 0.8181497174, 0.8191520443, 0.8201518759, 0.8211492091, 0.8221440410, - 0.8231363685, 0.8241261886, 0.8251134983, 0.8260982945, 0.8270805743, - 0.8280603346, 0.8290375726, 0.8300122851, 0.8309844693, 0.8319541221, - 0.8329212407, 0.8338858221, 0.8348478633, 0.8358073614, 0.8367643135, - 0.8377187166, 0.8386705679, 0.8396198645, 0.8405666035, 0.8415107819, - 0.8424523970, 0.8433914458, 0.8443279255, 0.8452618332, 0.8461931661, - 0.8471219214, 0.8480480962, 0.8489716876, 0.8498926930, 0.8508111094, - 0.8517269341, 0.8526401644, 0.8535507973, 0.8544588301, 0.8553642602, - 0.8562670846, 0.8571673007, 0.8580649057, 0.8589598969, 0.8598522716, - 0.8607420270, 0.8616291604, 0.8625136692, 0.8633955506, 0.8642748020, - 0.8651514206, 0.8660254038, 0.8668967489, 0.8677654534, 0.8686315144, - 0.8694949295, 0.8703556959, 0.8712138111, 0.8720692724, 0.8729220773, - 0.8737722230, 0.8746197071, 0.8754645270, 0.8763066800, 0.8771461637, - 0.8779829754, 0.8788171127, 0.8796485729, 0.8804773535, 0.8813034521, - 0.8821268660, 0.8829475929, 0.8837656301, 0.8845809752, 0.8853936258, - 0.8862035792, 0.8870108332, 0.8878153851, 0.8886172327, 0.8894163733, - 0.8902128046, 0.8910065242, 0.8917975296, 0.8925858185, 0.8933713883, - 0.8941542368, 0.8949343616, 0.8957117602, 0.8964864304, 0.8972583697, - 0.8980275758, 0.8987940463, 0.8995577790, 0.9003187714, 0.9010770213, - 0.9018325264, 0.9025852843, 0.9033352929, 0.9040825497, 0.9048270525, - 0.9055687990, 0.9063077870, 0.9070440143, 0.9077774785, 0.9085081775, - 0.9092361090, 0.9099612709, 0.9106836608, 0.9114032766, 0.9121201162, - 0.9128341772, 0.9135454576, 0.9142539552, 0.9149596678, 0.9156625933, - 0.9163627296, 0.9170600744, 0.9177546257, 0.9184463813, 0.9191353393, - 0.9198214973, 0.9205048535, 0.9211854056, 0.9218631516, 0.9225380895, - 0.9232102171, 0.9238795325, 0.9245460336, 0.9252097184, 0.9258705848, - 0.9265286309, 0.9271838546, 0.9278362539, 0.9284858269, 0.9291325715, - 0.9297764859, 0.9304175680, 0.9310558159, 0.9316912276, 0.9323238012, - 0.9329535348, 0.9335804265, 0.9342044743, 0.9348256764, 0.9354440308, - 0.9360595357, 0.9366721892, 0.9372819895, 0.9378889346, 0.9384930228, - 0.9390942521, 0.9396926208, 0.9402881270, 0.9408807690, 0.9414705448, - 0.9420574528, 0.9426414911, 0.9432226579, 0.9438009516, 0.9443763702, - 0.9449489122, 0.9455185756, 0.9460853588, 0.9466492601, 0.9472102777, - 0.9477684100, 0.9483236552, 0.9488760116, 0.9494254776, 0.9499720515, - 0.9505157316, 0.9510565163, 0.9515944039, 0.9521293927, 0.9526614813, - 0.9531906678, 0.9537169507, 0.9542403285, 0.9547607995, 0.9552783621, - 0.9557930148, 0.9563047560, 0.9568135841, 0.9573194975, 0.9578224948, - 0.9583225745, 0.9588197349, 0.9593139745, 0.9598052920, 0.9602936857, - 0.9607791542, 0.9612616959, 0.9617413095, 0.9622179935, 0.9626917464, - 0.9631625668, 0.9636304532, 0.9640954042, 0.9645574185, 0.9650164945, - 0.9654726309, 0.9659258263, 0.9663760793, 0.9668233886, 0.9672677528, - 0.9677091705, 0.9681476404, 0.9685831611, 0.9690157314, 0.9694453499, - 0.9698720153, 0.9702957263, 0.9707164816, 0.9711342799, 0.9715491200, - 0.9719610006, 0.9723699204, 0.9727758782, 0.9731788728, 0.9735789029, - 0.9739759673, 0.9743700648, 0.9747611942, 0.9751493543, 0.9755345439, - 0.9759167619, 0.9762960071, 0.9766722783, 0.9770455744, 0.9774158943, - 0.9777832368, 0.9781476007, 0.9785089851, 0.9788673888, 0.9792228106, - 0.9795752496, 0.9799247046, 0.9802711746, 0.9806146585, 0.9809551553, - 0.9812926640, 0.9816271834, 0.9819587127, 0.9822872507, 0.9826127965, - 0.9829353491, 0.9832549076, 0.9835714708, 0.9838850379, 0.9841956080, - 0.9845031800, 0.9848077530, 0.9851093262, 0.9854078985, 0.9857034691, - 0.9859960371, 0.9862856015, 0.9865721616, 0.9868557164, 0.9871362651, - 0.9874138068, 0.9876883406, 0.9879598658, 0.9882283814, 0.9884938868, - 0.9887563810, 0.9890158634, 0.9892723330, 0.9895257891, 0.9897762309, - 0.9900236577, 0.9902680687, 0.9905094632, 0.9907478405, 0.9909831997, - 0.9912155403, 0.9914448614, 0.9916711624, 0.9918944426, 0.9921147013, - 0.9923319379, 0.9925461516, 0.9927573419, 0.9929655081, 0.9931706495, - 0.9933727656, 0.9935718557, 0.9937679192, 0.9939609555, 0.9941509640, - 0.9943379441, 0.9945218954, 0.9947028171, 0.9948807088, 0.9950555700, - 0.9952274000, 0.9953961984, 0.9955619646, 0.9957246982, 0.9958843986, - 0.9960410654, 0.9961946981, 0.9963452962, 0.9964928592, 0.9966373868, - 0.9967788785, 0.9969173337, 0.9970527522, 0.9971851335, 0.9973144772, - 0.9974407829, 0.9975640503, 0.9976842788, 0.9978014683, 0.9979156183, - 0.9980267284, 0.9981347984, 0.9982398279, 0.9983418166, 0.9984407642, - 0.9985366703, 0.9986295348, 0.9987193572, 0.9988061373, 0.9988898750, - 0.9989705698, 0.9990482216, 0.9991228301, 0.9991943951, 0.9992629164, - 0.9993283938, 0.9993908270, 0.9994502159, 0.9995065604, 0.9995598601, - 0.9996101150, 0.9996573250, 0.9997014898, 0.9997426093, 0.9997806835, - 0.9998157121, 0.9998476952, 0.9998766325, 0.9999025240, 0.9999253697, - 0.9999451694, 0.9999619231, 0.9999756307, 0.9999862922, 0.9999939077, - 0.9999984769, 1.0000000000, 0.9999984769, 0.9999939077, 0.9999862922, - 0.9999756307, 0.9999619231, 0.9999451694, 0.9999253697, 0.9999025240, - 0.9998766325, 0.9998476952, 0.9998157121, 0.9997806835, 0.9997426093, - 0.9997014898, 0.9996573250, 0.9996101150, 0.9995598601, 0.9995065604, - 0.9994502159, 0.9993908270, 0.9993283938, 0.9992629164, 0.9991943951, - 0.9991228301, 0.9990482216, 0.9989705698, 0.9988898750, 0.9988061373, - 0.9987193572, 0.9986295348, 0.9985366703, 0.9984407642, 0.9983418166, - 0.9982398279, 0.9981347984, 0.9980267284, 0.9979156183, 0.9978014683, - 0.9976842788, 0.9975640503, 0.9974407829, 0.9973144772, 0.9971851335, - 0.9970527522, 0.9969173337, 0.9967788785, 0.9966373868, 0.9964928592, - 0.9963452962, 0.9961946981, 0.9960410654, 0.9958843986, 0.9957246982, - 0.9955619646, 0.9953961984, 0.9952274000, 0.9950555700, 0.9948807088, - 0.9947028171, 0.9945218954, 0.9943379441, 0.9941509640, 0.9939609555, - 0.9937679192, 0.9935718557, 0.9933727656, 0.9931706495, 0.9929655081, - 0.9927573419, 0.9925461516, 0.9923319379, 0.9921147013, 0.9918944426, - 0.9916711624, 0.9914448614, 0.9912155403, 0.9909831997, 0.9907478405, - 0.9905094632, 0.9902680687, 0.9900236577, 0.9897762309, 0.9895257891, - 0.9892723330, 0.9890158634, 0.9887563810, 0.9884938868, 0.9882283814, - 0.9879598658, 0.9876883406, 0.9874138068, 0.9871362651, 0.9868557164, - 0.9865721616, 0.9862856015, 0.9859960371, 0.9857034691, 0.9854078985, - 0.9851093262, 0.9848077530, 0.9845031800, 0.9841956080, 0.9838850379, - 0.9835714708, 0.9832549076, 0.9829353491, 0.9826127965, 0.9822872507, - 0.9819587127, 0.9816271834, 0.9812926640, 0.9809551553, 0.9806146585, - 0.9802711746, 0.9799247046, 0.9795752496, 0.9792228106, 0.9788673888, - 0.9785089851, 0.9781476007, 0.9777832368, 0.9774158943, 0.9770455744, - 0.9766722783, 0.9762960071, 0.9759167619, 0.9755345439, 0.9751493543, - 0.9747611942, 0.9743700648, 0.9739759673, 0.9735789029, 0.9731788728, - 0.9727758782, 0.9723699204, 0.9719610006, 0.9715491200, 0.9711342799, - 0.9707164816, 0.9702957263, 0.9698720153, 0.9694453499, 0.9690157314, - 0.9685831611, 0.9681476404, 0.9677091705, 0.9672677528, 0.9668233886, - 0.9663760793, 0.9659258263, 0.9654726309, 0.9650164945, 0.9645574185, - 0.9640954042, 0.9636304532, 0.9631625668, 0.9626917464, 0.9622179935, - 0.9617413095, 0.9612616959, 0.9607791542, 0.9602936857, 0.9598052920, - 0.9593139745, 0.9588197349, 0.9583225745, 0.9578224948, 0.9573194975, - 0.9568135841, 0.9563047560, 0.9557930148, 0.9552783621, 0.9547607995, - 0.9542403285, 0.9537169507, 0.9531906678, 0.9526614813, 0.9521293927, - 0.9515944039, 0.9510565163, 0.9505157316, 0.9499720515, 0.9494254776, - 0.9488760116, 0.9483236552, 0.9477684100, 0.9472102777, 0.9466492601, - 0.9460853588, 0.9455185756, 0.9449489122, 0.9443763702, 0.9438009516, - 0.9432226579, 0.9426414911, 0.9420574528, 0.9414705448, 0.9408807690, - 0.9402881270, 0.9396926208, 0.9390942521, 0.9384930228, 0.9378889346, - 0.9372819895, 0.9366721892, 0.9360595357, 0.9354440308, 0.9348256764, - 0.9342044743, 0.9335804265, 0.9329535348, 0.9323238012, 0.9316912276, - 0.9310558159, 0.9304175680, 0.9297764859, 0.9291325715, 0.9284858269, - 0.9278362539, 0.9271838546, 0.9265286309, 0.9258705848, 0.9252097184, - 0.9245460336, 0.9238795325, 0.9232102171, 0.9225380895, 0.9218631516, - 0.9211854056, 0.9205048535, 0.9198214973, 0.9191353393, 0.9184463813, - 0.9177546257, 0.9170600744, 0.9163627296, 0.9156625933, 0.9149596678, - 0.9142539552, 0.9135454576, 0.9128341772, 0.9121201162, 0.9114032766, - 0.9106836608, 0.9099612709, 0.9092361090, 0.9085081775, 0.9077774785, - 0.9070440143, 0.9063077870, 0.9055687990, 0.9048270525, 0.9040825497, - 0.9033352929, 0.9025852843, 0.9018325264, 0.9010770213, 0.9003187714, - 0.8995577790, 0.8987940463, 0.8980275758, 0.8972583697, 0.8964864304, - 0.8957117602, 0.8949343616, 0.8941542368, 0.8933713883, 0.8925858185, - 0.8917975296, 0.8910065242, 0.8902128046, 0.8894163733, 0.8886172327, - 0.8878153851, 0.8870108332, 0.8862035792, 0.8853936258, 0.8845809752, - 0.8837656301, 0.8829475929, 0.8821268660, 0.8813034521, 0.8804773535, - 0.8796485729, 0.8788171127, 0.8779829754, 0.8771461637, 0.8763066800, - 0.8754645270, 0.8746197071, 0.8737722230, 0.8729220773, 0.8720692724, - 0.8712138111, 0.8703556959, 0.8694949295, 0.8686315144, 0.8677654534, - 0.8668967489, 0.8660254038, 0.8651514206, 0.8642748020, 0.8633955506, - 0.8625136692, 0.8616291604, 0.8607420270, 0.8598522716, 0.8589598969, - 0.8580649057, 0.8571673007, 0.8562670846, 0.8553642602, 0.8544588301, - 0.8535507973, 0.8526401644, 0.8517269341, 0.8508111094, 0.8498926930, - 0.8489716876, 0.8480480962, 0.8471219214, 0.8461931661, 0.8452618332, - 0.8443279255, 0.8433914458, 0.8424523970, 0.8415107819, 0.8405666035, - 0.8396198645, 0.8386705679, 0.8377187166, 0.8367643135, 0.8358073614, - 0.8348478633, 0.8338858221, 0.8329212407, 0.8319541221, 0.8309844693, - 0.8300122851, 0.8290375726, 0.8280603346, 0.8270805743, 0.8260982945, - 0.8251134983, 0.8241261886, 0.8231363685, 0.8221440410, 0.8211492091, - 0.8201518759, 0.8191520443, 0.8181497174, 0.8171448983, 0.8161375901, - 0.8151277957, 0.8141155184, 0.8131007610, 0.8120835269, 0.8110638190, - 0.8100416404, 0.8090169944, 0.8079898839, 0.8069603121, 0.8059282822, - 0.8048937974, 0.8038568606, 0.8028174752, 0.8017756442, 0.8007313709, - 0.7996846585, 0.7986355100, 0.7975839288, 0.7965299180, 0.7954734809, - 0.7944146205, 0.7933533403, 0.7922896434, 0.7912235330, 0.7901550124, - 0.7890840848, 0.7880107536, 0.7869350220, 0.7858568932, 0.7847763705, - 0.7836934573, 0.7826081569, 0.7815204724, 0.7804304073, 0.7793379649, - 0.7782431485, 0.7771459615, 0.7760464071, 0.7749444887, 0.7738402097, - 0.7727335735, 0.7716245834, 0.7705132428, 0.7693995550, 0.7682835236, - 0.7671651518, 0.7660444431, 0.7649214009, 0.7637960286, 0.7626683297, - 0.7615383075, 0.7604059656, 0.7592713073, 0.7581343362, 0.7569950557, - 0.7558534692, 0.7547095802, 0.7535633923, 0.7524149089, 0.7512641335, - 0.7501110696, 0.7489557208, 0.7477980905, 0.7466381823, 0.7454759997, - 0.7443115462, 0.7431448255, 0.7419758410, 0.7408045963, 0.7396310950, - 0.7384553406, 0.7372773368, 0.7360970871, 0.7349145951, 0.7337298645, - 0.7325428988, 0.7313537016, 0.7301622766, 0.7289686274, 0.7277727577, - 0.7265746710, 0.7253743710, 0.7241718614, 0.7229671459, 0.7217602281, - 0.7205511117, 0.7193398003, 0.7181262978, 0.7169106077, 0.7156927337, - 0.7144726796, 0.7132504492, 0.7120260460, 0.7107994739, 0.7095707365, - 0.7083398377, 0.7071067812, 0.7058715707, 0.7046342100, 0.7033947028, - 0.7021530530, 0.7009092643, 0.6996633405, 0.6984152854, 0.6971651029, - 0.6959127966, 0.6946583705, 0.6934018283, 0.6921431739, 0.6908824111, - 0.6896195437, 0.6883545757, 0.6870875108, 0.6858183529, 0.6845471059, - 0.6832737737, 0.6819983601, 0.6807208690, 0.6794413043, 0.6781596699, - 0.6768759697, 0.6755902076, 0.6743023876, 0.6730125135, 0.6717205893, - 0.6704266190, 0.6691306064, 0.6678325555, 0.6665324702, 0.6652303547, - 0.6639262127, 0.6626200482, 0.6613118653, 0.6600016680, 0.6586894601, - 0.6573752458, 0.6560590290, 0.6547408137, 0.6534206040, 0.6520984038, - 0.6507742173, 0.6494480483, 0.6481199011, 0.6467897795, 0.6454576877, - 0.6441236298, 0.6427876097, 0.6414496316, 0.6401096995, 0.6387678175, - 0.6374239897, 0.6360782203, 0.6347305132, 0.6333808726, 0.6320293027, - 0.6306758074, 0.6293203910, 0.6279630576, 0.6266038114, 0.6252426563, - 0.6238795967, 0.6225146366, 0.6211477803, 0.6197790318, 0.6184083954, - 0.6170358751, 0.6156614753, 0.6142852001, 0.6129070537, 0.6115270402, - 0.6101451639, 0.6087614290, 0.6073758397, 0.6059884003, 0.6045991149, - 0.6032079877, 0.6018150232, 0.6004202253, 0.5990235985, 0.5976251470, - 0.5962248750, 0.5948227868, 0.5934188866, 0.5920131788, 0.5906056676, - 0.5891963574, 0.5877852523, 0.5863723567, 0.5849576750, 0.5835412114, - 0.5821229702, 0.5807029557, 0.5792811723, 0.5778576244, 0.5764323162, - 0.5750052520, 0.5735764364, 0.5721458734, 0.5707135677, 0.5692795234, - 0.5678437451, 0.5664062369, 0.5649670034, 0.5635260489, 0.5620833779, - 0.5606389946, 0.5591929035, 0.5577451090, 0.5562956155, 0.5548444274, - 0.5533915492, 0.5519369853, 0.5504807401, 0.5490228180, 0.5475632235, - 0.5461019610, 0.5446390350, 0.5431744500, 0.5417082103, 0.5402403205, - 0.5387707850, 0.5372996083, 0.5358267950, 0.5343523494, 0.5328762761, - 0.5313985795, 0.5299192642, 0.5284383347, 0.5269557955, 0.5254716511, - 0.5239859060, 0.5224985647, 0.5210096318, 0.5195191119, 0.5180270094, - 0.5165333289, 0.5150380749, 0.5135412521, 0.5120428649, 0.5105429179, - 0.5090414158, 0.5075383630, 0.5060337641, 0.5045276238, 0.5030199466, - 0.5015107372, 0.5000000000, 0.4984877398, 0.4969739610, 0.4954586684, - 0.4939418666, 0.4924235601, 0.4909037536, 0.4893824517, 0.4878596591, - 0.4863353804, 0.4848096202, 0.4832823833, 0.4817536741, 0.4802234974, - 0.4786918579, 0.4771587603, 0.4756242091, 0.4740882090, 0.4725507649, - 0.4710118812, 0.4694715628, 0.4679298143, 0.4663866403, 0.4648420457, - 0.4632960351, 0.4617486132, 0.4601997848, 0.4586495545, 0.4570979271, - 0.4555449072, 0.4539904997, 0.4524347093, 0.4508775407, 0.4493189986, - 0.4477590878, 0.4461978131, 0.4446351792, 0.4430711908, 0.4415058528, - 0.4399391699, 0.4383711468, 0.4368017884, 0.4352310994, 0.4336590846, - 0.4320857488, 0.4305110968, 0.4289351334, 0.4273578634, 0.4257792916, - 0.4241994227, 0.4226182617, 0.4210358134, 0.4194520824, 0.4178670738, - 0.4162807923, 0.4146932427, 0.4131044298, 0.4115143586, 0.4099230338, - 0.4083304604, 0.4067366431, 0.4051415868, 0.4035452964, 0.4019477767, - 0.4003490326, 0.3987490689, 0.3971478906, 0.3955455026, 0.3939419096, - 0.3923371166, 0.3907311285, 0.3891239501, 0.3875155865, 0.3859060423, - 0.3842953227, 0.3826834324, 0.3810703764, 0.3794561595, 0.3778407868, - 0.3762242631, 0.3746065934, 0.3729877826, 0.3713678356, 0.3697467573, - 0.3681245527, 0.3665012267, 0.3648767843, 0.3632512305, 0.3616245701, - 0.3599968081, 0.3583679495, 0.3567379993, 0.3551069624, 0.3534748438, - 0.3518416484, 0.3502073813, 0.3485720473, 0.3469356516, 0.3452981990, - 0.3436596946, 0.3420201433, 0.3403795502, 0.3387379202, 0.3370952584, - 0.3354515698, 0.3338068592, 0.3321611319, 0.3305143927, 0.3288666467, - 0.3272178990, 0.3255681545, 0.3239174182, 0.3222656952, 0.3206129906, - 0.3189593093, 0.3173046564, 0.3156490369, 0.3139924560, 0.3123349185, - 0.3106764296, 0.3090169944, 0.3073566178, 0.3056953050, 0.3040330609, - 0.3023698908, 0.3007057995, 0.2990407923, 0.2973748741, 0.2957080500, - 0.2940403252, 0.2923717047, 0.2907021936, 0.2890317969, 0.2873605198, - 0.2856883674, 0.2840153447, 0.2823414568, 0.2806667089, 0.2789911060, - 0.2773146533, 0.2756373558, 0.2739592187, 0.2722802470, 0.2706004460, - 0.2689198206, 0.2672383761, 0.2655561175, 0.2638730500, 0.2621891786, - 0.2605045086, 0.2588190451, 0.2571327932, 0.2554457579, 0.2537579446, - 0.2520693582, 0.2503800041, 0.2486898872, 0.2469990127, 0.2453073859, - 0.2436150118, 0.2419218956, 0.2402280425, 0.2385334576, 0.2368381461, - 0.2351421131, 0.2334453639, 0.2317479035, 0.2300497372, 0.2283508701, - 0.2266513074, 0.2249510543, 0.2232501160, 0.2215484976, 0.2198462044, - 0.2181432414, 0.2164396139, 0.2147353272, 0.2130303863, 0.2113247965, - 0.2096185629, 0.2079116908, 0.2062041854, 0.2044960518, 0.2027872954, - 0.2010779211, 0.1993679344, 0.1976573404, 0.1959461442, 0.1942343512, - 0.1925219665, 0.1908089954, 0.1890954430, 0.1873813146, 0.1856666154, - 0.1839513506, 0.1822355255, 0.1805191453, 0.1788022151, 0.1770847403, - 0.1753667261, 0.1736481777, 0.1719291003, 0.1702094992, 0.1684893796, - 0.1667687467, 0.1650476059, 0.1633259622, 0.1616038211, 0.1598811877, - 0.1581580673, 0.1564344650, 0.1547103863, 0.1529858363, 0.1512608202, - 0.1495353434, 0.1478094111, 0.1460830286, 0.1443562010, 0.1426289337, - 0.1409012319, 0.1391731010, 0.1374445460, 0.1357155724, 0.1339861854, - 0.1322563903, 0.1305261922, 0.1287955966, 0.1270646086, 0.1253332336, - 0.1236014767, 0.1218693434, 0.1201368388, 0.1184039683, 0.1166707371, - 0.1149371505, 0.1132032138, 0.1114689322, 0.1097343111, 0.1079993557, - 0.1062640713, 0.1045284633, 0.1027925368, 0.1010562972, 0.0993197497, - 0.0975828998, 0.0958457525, 0.0941083133, 0.0923705874, 0.0906325802, - 0.0888942969, 0.0871557427, 0.0854169231, 0.0836778433, 0.0819385086, - 0.0801989243, 0.0784590957, 0.0767190281, 0.0749787268, 0.0732381971, - 0.0714974443, 0.0697564737, 0.0680152907, 0.0662739004, 0.0645323083, - 0.0627905195, 0.0610485395, 0.0593063736, 0.0575640270, 0.0558215050, - 0.0540788130, 0.0523359562, 0.0505929401, 0.0488497698, 0.0471064507, - 0.0453629881, 0.0436193874, 0.0418756537, 0.0401317925, 0.0383878091, - 0.0366437087, 0.0348994967, 0.0331551784, 0.0314107591, 0.0296662441, - 0.0279216387, 0.0261769483, 0.0244321782, 0.0226873336, 0.0209424199, - 0.0191974424, 0.0174524064, 0.0157073173, 0.0139621803, 0.0122170008, - 0.0104717841, 0.0087265355, 0.0069812603, 0.0052359638, 0.0034906514, - 0.0017453284, 0.0000000000, -0.0017453284, -0.0034906514,-0.0052359638, - -0.0069812603, -0.0087265355, -0.0104717841, -0.0122170008,-0.0139621803, - -0.0157073173, -0.0174524064, -0.0191974424, -0.0209424199,-0.0226873336, - -0.0244321782, -0.0261769483, -0.0279216387, -0.0296662441,-0.0314107591, - -0.0331551784, -0.0348994967, -0.0366437087, -0.0383878091,-0.0401317925, - -0.0418756537, -0.0436193874, -0.0453629881, -0.0471064507,-0.0488497698, - -0.0505929401, -0.0523359562, -0.0540788130, -0.0558215050,-0.0575640270, - -0.0593063736, -0.0610485395, -0.0627905195, -0.0645323083,-0.0662739004, - -0.0680152907, -0.0697564737, -0.0714974443, -0.0732381971,-0.0749787268, - -0.0767190281, -0.0784590957, -0.0801989243, -0.0819385086,-0.0836778433, - -0.0854169231, -0.0871557427, -0.0888942969, -0.0906325802,-0.0923705874, - -0.0941083133, -0.0958457525, -0.0975828998, -0.0993197497,-0.1010562972, - -0.1027925368, -0.1045284633, -0.1062640713, -0.1079993557,-0.1097343111, - -0.1114689322, -0.1132032138, -0.1149371505, -0.1166707371,-0.1184039683, - -0.1201368388, -0.1218693434, -0.1236014767, -0.1253332336,-0.1270646086, - -0.1287955966, -0.1305261922, -0.1322563903, -0.1339861854,-0.1357155724, - -0.1374445460, -0.1391731010, -0.1409012319, -0.1426289337,-0.1443562010, - -0.1460830286, -0.1478094111, -0.1495353434, -0.1512608202,-0.1529858363, - -0.1547103863, -0.1564344650, -0.1581580673, -0.1598811877,-0.1616038211, - -0.1633259622, -0.1650476059, -0.1667687467, -0.1684893796,-0.1702094992, - -0.1719291003, -0.1736481777, -0.1753667261, -0.1770847403,-0.1788022151, - -0.1805191453, -0.1822355255, -0.1839513506, -0.1856666154,-0.1873813146, - -0.1890954430, -0.1908089954, -0.1925219665, -0.1942343512,-0.1959461442, - -0.1976573404, -0.1993679344, -0.2010779211, -0.2027872954,-0.2044960518, - -0.2062041854, -0.2079116908, -0.2096185629, -0.2113247965,-0.2130303863, - -0.2147353272, -0.2164396139, -0.2181432414, -0.2198462044,-0.2215484976, - -0.2232501160, -0.2249510543, -0.2266513074, -0.2283508701,-0.2300497372, - -0.2317479035, -0.2334453639, -0.2351421131, -0.2368381461,-0.2385334576, - -0.2402280425, -0.2419218956, -0.2436150118, -0.2453073859,-0.2469990127, - -0.2486898872, -0.2503800041, -0.2520693582, -0.2537579446,-0.2554457579, - -0.2571327932, -0.2588190451, -0.2605045086, -0.2621891786,-0.2638730500, - -0.2655561175, -0.2672383761, -0.2689198206, -0.2706004460,-0.2722802470, - -0.2739592187, -0.2756373558, -0.2773146533, -0.2789911060,-0.2806667089, - -0.2823414568, -0.2840153447, -0.2856883674, -0.2873605198,-0.2890317969, - -0.2907021936, -0.2923717047, -0.2940403252, -0.2957080500,-0.2973748741, - -0.2990407923, -0.3007057995, -0.3023698908, -0.3040330609,-0.3056953050, - -0.3073566178, -0.3090169944, -0.3106764296, -0.3123349185,-0.3139924560, - -0.3156490369, -0.3173046564, -0.3189593093, -0.3206129906,-0.3222656952, - -0.3239174182, -0.3255681545, -0.3272178990, -0.3288666467,-0.3305143927, - -0.3321611319, -0.3338068592, -0.3354515698, -0.3370952584,-0.3387379202, - -0.3403795502, -0.3420201433, -0.3436596946, -0.3452981990,-0.3469356516, - -0.3485720473, -0.3502073813, -0.3518416484, -0.3534748438,-0.3551069624, - -0.3567379993, -0.3583679495, -0.3599968081, -0.3616245701,-0.3632512305, - -0.3648767843, -0.3665012267, -0.3681245527, -0.3697467573,-0.3713678356, - -0.3729877826, -0.3746065934, -0.3762242631, -0.3778407868,-0.3794561595, - -0.3810703764, -0.3826834324, -0.3842953227, -0.3859060423,-0.3875155865, - -0.3891239501, -0.3907311285, -0.3923371166, -0.3939419096,-0.3955455026, - -0.3971478906, -0.3987490689, -0.4003490326, -0.4019477767,-0.4035452964, - -0.4051415868, -0.4067366431, -0.4083304604, -0.4099230338,-0.4115143586, - -0.4131044298, -0.4146932427, -0.4162807923, -0.4178670738,-0.4194520824, - -0.4210358134, -0.4226182617, -0.4241994227, -0.4257792916,-0.4273578634, - -0.4289351334, -0.4305110968, -0.4320857488, -0.4336590846,-0.4352310994, - -0.4368017884, -0.4383711468, -0.4399391699, -0.4415058528,-0.4430711908, - -0.4446351792, -0.4461978131, -0.4477590878, -0.4493189986,-0.4508775407, - -0.4524347093, -0.4539904997, -0.4555449072, -0.4570979271,-0.4586495545, - -0.4601997848, -0.4617486132, -0.4632960351, -0.4648420457,-0.4663866403, - -0.4679298143, -0.4694715628, -0.4710118812, -0.4725507649,-0.4740882090, - -0.4756242091, -0.4771587603, -0.4786918579, -0.4802234974,-0.4817536741, - -0.4832823833, -0.4848096202, -0.4863353804, -0.4878596591,-0.4893824517, - -0.4909037536, -0.4924235601, -0.4939418666, -0.4954586684,-0.4969739610, - -0.4984877398, -0.5000000000, -0.5015107372, -0.5030199466,-0.5045276238, - -0.5060337641, -0.5075383630, -0.5090414158, -0.5105429179,-0.5120428649, - -0.5135412521, -0.5150380749, -0.5165333289, -0.5180270094,-0.5195191119, - -0.5210096318, -0.5224985647, -0.5239859060, -0.5254716511,-0.5269557955, - -0.5284383347, -0.5299192642, -0.5313985795, -0.5328762761,-0.5343523494, - -0.5358267950, -0.5372996083, -0.5387707850, -0.5402403205,-0.5417082103, - -0.5431744500, -0.5446390350, -0.5461019610, -0.5475632235,-0.5490228180, - -0.5504807401, -0.5519369853, -0.5533915492, -0.5548444274,-0.5562956155, - -0.5577451090, -0.5591929035, -0.5606389946, -0.5620833779,-0.5635260489, - -0.5649670034, -0.5664062369, -0.5678437451, -0.5692795234,-0.5707135677, - -0.5721458734, -0.5735764364, -0.5750052520, -0.5764323162,-0.5778576244, - -0.5792811723, -0.5807029557, -0.5821229702, -0.5835412114,-0.5849576750, - -0.5863723567, -0.5877852523, -0.5891963574, -0.5906056676,-0.5920131788, - -0.5934188866, -0.5948227868, -0.5962248750, -0.5976251470,-0.5990235985, - -0.6004202253, -0.6018150232, -0.6032079877, -0.6045991149,-0.6059884003, - -0.6073758397, -0.6087614290, -0.6101451639, -0.6115270402,-0.6129070537, - -0.6142852001, -0.6156614753, -0.6170358751, -0.6184083954,-0.6197790318, - -0.6211477803, -0.6225146366, -0.6238795967, -0.6252426563,-0.6266038114, - -0.6279630576, -0.6293203910, -0.6306758074, -0.6320293027,-0.6333808726, - -0.6347305132, -0.6360782203, -0.6374239897, -0.6387678175,-0.6401096995, - -0.6414496316, -0.6427876097, -0.6441236298, -0.6454576877,-0.6467897795, - -0.6481199011, -0.6494480483, -0.6507742173, -0.6520984038,-0.6534206040, - -0.6547408137, -0.6560590290, -0.6573752458, -0.6586894601,-0.6600016680, - -0.6613118653, -0.6626200482, -0.6639262127, -0.6652303547,-0.6665324702, - -0.6678325555, -0.6691306064, -0.6704266190, -0.6717205893,-0.6730125135, - -0.6743023876, -0.6755902076, -0.6768759697, -0.6781596699,-0.6794413043, - -0.6807208690, -0.6819983601, -0.6832737737, -0.6845471059,-0.6858183529, - -0.6870875108, -0.6883545757, -0.6896195437, -0.6908824111,-0.6921431739, - -0.6934018283, -0.6946583705, -0.6959127966, -0.6971651029,-0.6984152854, - -0.6996633405, -0.7009092643, -0.7021530530, -0.7033947028,-0.7046342100, - -0.7058715707, -0.7071067812, -0.7083398377, -0.7095707365,-0.7107994739, - -0.7120260460, -0.7132504492, -0.7144726796, -0.7156927337,-0.7169106077, - -0.7181262978, -0.7193398003, -0.7205511117, -0.7217602281,-0.7229671459, - -0.7241718614, -0.7253743710, -0.7265746710, -0.7277727577,-0.7289686274, - -0.7301622766, -0.7313537016, -0.7325428988, -0.7337298645,-0.7349145951, - -0.7360970871, -0.7372773368, -0.7384553406, -0.7396310950,-0.7408045963, - -0.7419758410, -0.7431448255, -0.7443115462, -0.7454759997,-0.7466381823, - -0.7477980905, -0.7489557208, -0.7501110696, -0.7512641335,-0.7524149089, - -0.7535633923, -0.7547095802, -0.7558534692, -0.7569950557,-0.7581343362, - -0.7592713073, -0.7604059656, -0.7615383075, -0.7626683297,-0.7637960286, - -0.7649214009, -0.7660444431, -0.7671651518, -0.7682835236,-0.7693995550, - -0.7705132428, -0.7716245834, -0.7727335735, -0.7738402097,-0.7749444887, - -0.7760464071, -0.7771459615, -0.7782431485, -0.7793379649,-0.7804304073, - -0.7815204724, -0.7826081569, -0.7836934573, -0.7847763705,-0.7858568932, - -0.7869350220, -0.7880107536, -0.7890840848, -0.7901550124,-0.7912235330, - -0.7922896434, -0.7933533403, -0.7944146205, -0.7954734809,-0.7965299180, - -0.7975839288, -0.7986355100, -0.7996846585, -0.8007313709,-0.8017756442, - -0.8028174752, -0.8038568606, -0.8048937974, -0.8059282822,-0.8069603121, - -0.8079898839, -0.8090169944, -0.8100416404, -0.8110638190,-0.8120835269, - -0.8131007610, -0.8141155184, -0.8151277957, -0.8161375901,-0.8171448983, - -0.8181497174, -0.8191520443, -0.8201518759, -0.8211492091,-0.8221440410, - -0.8231363685, -0.8241261886, -0.8251134983, -0.8260982945,-0.8270805743, - -0.8280603346, -0.8290375726, -0.8300122851, -0.8309844693,-0.8319541221, - -0.8329212407, -0.8338858221, -0.8348478633, -0.8358073614,-0.8367643135, - -0.8377187166, -0.8386705679, -0.8396198645, -0.8405666035,-0.8415107819, - -0.8424523970, -0.8433914458, -0.8443279255, -0.8452618332,-0.8461931661, - -0.8471219214, -0.8480480962, -0.8489716876, -0.8498926930,-0.8508111094, - -0.8517269341, -0.8526401644, -0.8535507973, -0.8544588301,-0.8553642602, - -0.8562670846, -0.8571673007, -0.8580649057, -0.8589598969,-0.8598522716, - -0.8607420270, -0.8616291604, -0.8625136692, -0.8633955506,-0.8642748020, - -0.8651514206, -0.8660254038, -0.8668967489, -0.8677654534,-0.8686315144, - -0.8694949295, -0.8703556959, -0.8712138111, -0.8720692724,-0.8729220773, - -0.8737722230, -0.8746197071, -0.8754645270, -0.8763066800,-0.8771461637, - -0.8779829754, -0.8788171127, -0.8796485729, -0.8804773535,-0.8813034521, - -0.8821268660, -0.8829475929, -0.8837656301, -0.8845809752,-0.8853936258, - -0.8862035792, -0.8870108332, -0.8878153851, -0.8886172327,-0.8894163733, - -0.8902128046, -0.8910065242, -0.8917975296, -0.8925858185,-0.8933713883, - -0.8941542368, -0.8949343616, -0.8957117602, -0.8964864304,-0.8972583697, - -0.8980275758, -0.8987940463, -0.8995577790, -0.9003187714,-0.9010770213, - -0.9018325264, -0.9025852843, -0.9033352929, -0.9040825497,-0.9048270525, - -0.9055687990, -0.9063077870, -0.9070440143, -0.9077774785,-0.9085081775, - -0.9092361090, -0.9099612709, -0.9106836608, -0.9114032766,-0.9121201162, - -0.9128341772, -0.9135454576, -0.9142539552, -0.9149596678,-0.9156625933, - -0.9163627296, -0.9170600744, -0.9177546257, -0.9184463813,-0.9191353393, - -0.9198214973, -0.9205048535, -0.9211854056, -0.9218631516,-0.9225380895, - -0.9232102171, -0.9238795325, -0.9245460336, -0.9252097184,-0.9258705848, - -0.9265286309, -0.9271838546, -0.9278362539, -0.9284858269,-0.9291325715, - -0.9297764859, -0.9304175680, -0.9310558159, -0.9316912276,-0.9323238012, - -0.9329535348, -0.9335804265, -0.9342044743, -0.9348256764,-0.9354440308, - -0.9360595357, -0.9366721892, -0.9372819895, -0.9378889346,-0.9384930228, - -0.9390942521, -0.9396926208, -0.9402881270, -0.9408807690,-0.9414705448, - -0.9420574528, -0.9426414911, -0.9432226579, -0.9438009516,-0.9443763702, - -0.9449489122, -0.9455185756, -0.9460853588, -0.9466492601,-0.9472102777, - -0.9477684100, -0.9483236552, -0.9488760116, -0.9494254776,-0.9499720515, - -0.9505157316, -0.9510565163, -0.9515944039, -0.9521293927,-0.9526614813, - -0.9531906678, -0.9537169507, -0.9542403285, -0.9547607995,-0.9552783621, - -0.9557930148, -0.9563047560, -0.9568135841, -0.9573194975,-0.9578224948, - -0.9583225745, -0.9588197349, -0.9593139745, -0.9598052920,-0.9602936857, - -0.9607791542, -0.9612616959, -0.9617413095, -0.9622179935,-0.9626917464, - -0.9631625668, -0.9636304532, -0.9640954042, -0.9645574185,-0.9650164945, - -0.9654726309, -0.9659258263, -0.9663760793, -0.9668233886,-0.9672677528, - -0.9677091705, -0.9681476404, -0.9685831611, -0.9690157314,-0.9694453499, - -0.9698720153, -0.9702957263, -0.9707164816, -0.9711342799,-0.9715491200, - -0.9719610006, -0.9723699204, -0.9727758782, -0.9731788728,-0.9735789029, - -0.9739759673, -0.9743700648, -0.9747611942, -0.9751493543,-0.9755345439, - -0.9759167619, -0.9762960071, -0.9766722783, -0.9770455744,-0.9774158943, - -0.9777832368, -0.9781476007, -0.9785089851, -0.9788673888,-0.9792228106, - -0.9795752496, -0.9799247046, -0.9802711746, -0.9806146585,-0.9809551553, - -0.9812926640, -0.9816271834, -0.9819587127, -0.9822872507,-0.9826127965, - -0.9829353491, -0.9832549076, -0.9835714708, -0.9838850379,-0.9841956080, - -0.9845031800, -0.9848077530, -0.9851093262, -0.9854078985,-0.9857034691, - -0.9859960371, -0.9862856015, -0.9865721616, -0.9868557164,-0.9871362651, - -0.9874138068, -0.9876883406, -0.9879598658, -0.9882283814,-0.9884938868, - -0.9887563810, -0.9890158634, -0.9892723330, -0.9895257891,-0.9897762309, - -0.9900236577, -0.9902680687, -0.9905094632, -0.9907478405,-0.9909831997, - -0.9912155403, -0.9914448614, -0.9916711624, -0.9918944426,-0.9921147013, - -0.9923319379, -0.9925461516, -0.9927573419, -0.9929655081,-0.9931706495, - -0.9933727656, -0.9935718557, -0.9937679192, -0.9939609555,-0.9941509640, - -0.9943379441, -0.9945218954, -0.9947028171, -0.9948807088,-0.9950555700, - -0.9952274000, -0.9953961984, -0.9955619646, -0.9957246982,-0.9958843986, - -0.9960410654, -0.9961946981, -0.9963452962, -0.9964928592,-0.9966373868, - -0.9967788785, -0.9969173337, -0.9970527522, -0.9971851335,-0.9973144772, - -0.9974407829, -0.9975640503, -0.9976842788, -0.9978014683,-0.9979156183, - -0.9980267284, -0.9981347984, -0.9982398279, -0.9983418166,-0.9984407642, - -0.9985366703, -0.9986295348, -0.9987193572, -0.9988061373,-0.9988898750, - -0.9989705698, -0.9990482216, -0.9991228301, -0.9991943951,-0.9992629164, - -0.9993283938, -0.9993908270, -0.9994502159, -0.9995065604,-0.9995598601, - -0.9996101150, -0.9996573250, -0.9997014898, -0.9997426093,-0.9997806835, - -0.9998157121, -0.9998476952, -0.9998766325, -0.9999025240,-0.9999253697, - -0.9999451694, -0.9999619231, -0.9999756307, -0.9999862922,-0.9999939077, - -0.9999984769, -1.0000000000, -0.9999984769, -0.9999939077,-0.9999862922, - -0.9999756307, -0.9999619231, -0.9999451694, -0.9999253697,-0.9999025240, - -0.9998766325, -0.9998476952, -0.9998157121, -0.9997806835,-0.9997426093, - -0.9997014898, -0.9996573250, -0.9996101150, -0.9995598601,-0.9995065604, - -0.9994502159, -0.9993908270, -0.9993283938, -0.9992629164,-0.9991943951, - -0.9991228301, -0.9990482216, -0.9989705698, -0.9988898750,-0.9988061373, - -0.9987193572, -0.9986295348, -0.9985366703, -0.9984407642,-0.9983418166, - -0.9982398279, -0.9981347984, -0.9980267284, -0.9979156183,-0.9978014683, - -0.9976842788, -0.9975640503, -0.9974407829, -0.9973144772,-0.9971851335, - -0.9970527522, -0.9969173337, -0.9967788785, -0.9966373868,-0.9964928592, - -0.9963452962, -0.9961946981, -0.9960410654, -0.9958843986,-0.9957246982, - -0.9955619646, -0.9953961984, -0.9952274000, -0.9950555700,-0.9948807088, - -0.9947028171, -0.9945218954, -0.9943379441, -0.9941509640,-0.9939609555, - -0.9937679192, -0.9935718557, -0.9933727656, -0.9931706495,-0.9929655081, - -0.9927573419, -0.9925461516, -0.9923319379, -0.9921147013,-0.9918944426, - -0.9916711624, -0.9914448614, -0.9912155403, -0.9909831997,-0.9907478405, - -0.9905094632, -0.9902680687, -0.9900236577, -0.9897762309,-0.9895257891, - -0.9892723330, -0.9890158634, -0.9887563810, -0.9884938868,-0.9882283814, - -0.9879598658, -0.9876883406, -0.9874138068, -0.9871362651,-0.9868557164, - -0.9865721616, -0.9862856015, -0.9859960371, -0.9857034691,-0.9854078985, - -0.9851093262, -0.9848077530, -0.9845031800, -0.9841956080,-0.9838850379, - -0.9835714708, -0.9832549076, -0.9829353491, -0.9826127965,-0.9822872507, - -0.9819587127, -0.9816271834, -0.9812926640, -0.9809551553,-0.9806146585, - -0.9802711746, -0.9799247046, -0.9795752496, -0.9792228106,-0.9788673888, - -0.9785089851, -0.9781476007, -0.9777832368, -0.9774158943,-0.9770455744, - -0.9766722783, -0.9762960071, -0.9759167619, -0.9755345439,-0.9751493543, - -0.9747611942, -0.9743700648, -0.9739759673, -0.9735789029,-0.9731788728, - -0.9727758782, -0.9723699204, -0.9719610006, -0.9715491200,-0.9711342799, - -0.9707164816, -0.9702957263, -0.9698720153, -0.9694453499,-0.9690157314, - -0.9685831611, -0.9681476404, -0.9677091705, -0.9672677528,-0.9668233886, - -0.9663760793, -0.9659258263, -0.9654726309, -0.9650164945,-0.9645574185, - -0.9640954042, -0.9636304532, -0.9631625668, -0.9626917464,-0.9622179935, - -0.9617413095, -0.9612616959, -0.9607791542, -0.9602936857,-0.9598052920, - -0.9593139745, -0.9588197349, -0.9583225745, -0.9578224948,-0.9573194975, - -0.9568135841, -0.9563047560, -0.9557930148, -0.9552783621,-0.9547607995, - -0.9542403285, -0.9537169507, -0.9531906678, -0.9526614813,-0.9521293927, - -0.9515944039, -0.9510565163, -0.9505157316, -0.9499720515,-0.9494254776, - -0.9488760116, -0.9483236552, -0.9477684100, -0.9472102777,-0.9466492601, - -0.9460853588, -0.9455185756, -0.9449489122, -0.9443763702,-0.9438009516, - -0.9432226579, -0.9426414911, -0.9420574528, -0.9414705448,-0.9408807690, - -0.9402881270, -0.9396926208, -0.9390942521, -0.9384930228,-0.9378889346, - -0.9372819895, -0.9366721892, -0.9360595357, -0.9354440308,-0.9348256764, - -0.9342044743, -0.9335804265, -0.9329535348, -0.9323238012,-0.9316912276, - -0.9310558159, -0.9304175680, -0.9297764859, -0.9291325715,-0.9284858269, - -0.9278362539, -0.9271838546, -0.9265286309, -0.9258705848,-0.9252097184, - -0.9245460336, -0.9238795325, -0.9232102171, -0.9225380895,-0.9218631516, - -0.9211854056, -0.9205048535, -0.9198214973, -0.9191353393,-0.9184463813, - -0.9177546257, -0.9170600744, -0.9163627296, -0.9156625933,-0.9149596678, - -0.9142539552, -0.9135454576, -0.9128341772, -0.9121201162,-0.9114032766, - -0.9106836608, -0.9099612709, -0.9092361090, -0.9085081775,-0.9077774785, - -0.9070440143, -0.9063077870, -0.9055687990, -0.9048270525,-0.9040825497, - -0.9033352929, -0.9025852843, -0.9018325264, -0.9010770213,-0.9003187714, - -0.8995577790, -0.8987940463, -0.8980275758, -0.8972583697,-0.8964864304, - -0.8957117602, -0.8949343616, -0.8941542368, -0.8933713883,-0.8925858185, - -0.8917975296, -0.8910065242, -0.8902128046, -0.8894163733,-0.8886172327, - -0.8878153851, -0.8870108332, -0.8862035792, -0.8853936258,-0.8845809752, - -0.8837656301, -0.8829475929, -0.8821268660, -0.8813034521,-0.8804773535, - -0.8796485729, -0.8788171127, -0.8779829754, -0.8771461637,-0.8763066800, - -0.8754645270, -0.8746197071, -0.8737722230, -0.8729220773,-0.8720692724, - -0.8712138111, -0.8703556959, -0.8694949295, -0.8686315144,-0.8677654534, - -0.8668967489, -0.8660254038, -0.8651514206, -0.8642748020,-0.8633955506, - -0.8625136692, -0.8616291604, -0.8607420270, -0.8598522716,-0.8589598969, - -0.8580649057, -0.8571673007, -0.8562670846, -0.8553642602,-0.8544588301, - -0.8535507973, -0.8526401644, -0.8517269341, -0.8508111094,-0.8498926930, - -0.8489716876, -0.8480480962, -0.8471219214, -0.8461931661,-0.8452618332, - -0.8443279255, -0.8433914458, -0.8424523970, -0.8415107819,-0.8405666035, - -0.8396198645, -0.8386705679, -0.8377187166, -0.8367643135,-0.8358073614, - -0.8348478633, -0.8338858221, -0.8329212407, -0.8319541221,-0.8309844693, - -0.8300122851, -0.8290375726, -0.8280603346, -0.8270805743,-0.8260982945, - -0.8251134983, -0.8241261886, -0.8231363685, -0.8221440410,-0.8211492091, - -0.8201518759, -0.8191520443, -0.8181497174, -0.8171448983,-0.8161375901, - -0.8151277957, -0.8141155184, -0.8131007610, -0.8120835269,-0.8110638190, - -0.8100416404, -0.8090169944, -0.8079898839, -0.8069603121,-0.8059282822, - -0.8048937974, -0.8038568606, -0.8028174752, -0.8017756442,-0.8007313709, - -0.7996846585, -0.7986355100, -0.7975839288, -0.7965299180,-0.7954734809, - -0.7944146205, -0.7933533403, -0.7922896434, -0.7912235330,-0.7901550124, - -0.7890840848, -0.7880107536, -0.7869350220, -0.7858568932,-0.7847763705, - -0.7836934573, -0.7826081569, -0.7815204724, -0.7804304073,-0.7793379649, - -0.7782431485, -0.7771459615, -0.7760464071, -0.7749444887,-0.7738402097, - -0.7727335735, -0.7716245834, -0.7705132428, -0.7693995550,-0.7682835236, - -0.7671651518, -0.7660444431, -0.7649214009, -0.7637960286,-0.7626683297, - -0.7615383075, -0.7604059656, -0.7592713073, -0.7581343362,-0.7569950557, - -0.7558534692, -0.7547095802, -0.7535633923, -0.7524149089,-0.7512641335, - -0.7501110696, -0.7489557208, -0.7477980905, -0.7466381823,-0.7454759997, - -0.7443115462, -0.7431448255, -0.7419758410, -0.7408045963,-0.7396310950, - -0.7384553406, -0.7372773368, -0.7360970871, -0.7349145951,-0.7337298645, - -0.7325428988, -0.7313537016, -0.7301622766, -0.7289686274,-0.7277727577, - -0.7265746710, -0.7253743710, -0.7241718614, -0.7229671459,-0.7217602281, - -0.7205511117, -0.7193398003, -0.7181262978, -0.7169106077,-0.7156927337, - -0.7144726796, -0.7132504492, -0.7120260460, -0.7107994739,-0.7095707365, - -0.7083398377, -0.7071067812, -0.7058715707, -0.7046342100,-0.7033947028, - -0.7021530530, -0.7009092643, -0.6996633405, -0.6984152854,-0.6971651029, - -0.6959127966, -0.6946583705, -0.6934018283, -0.6921431739,-0.6908824111, - -0.6896195437, -0.6883545757, -0.6870875108, -0.6858183529,-0.6845471059, - -0.6832737737, -0.6819983601, -0.6807208690, -0.6794413043,-0.6781596699, - -0.6768759697, -0.6755902076, -0.6743023876, -0.6730125135,-0.6717205893, - -0.6704266190, -0.6691306064, -0.6678325555, -0.6665324702,-0.6652303547, - -0.6639262127, -0.6626200482, -0.6613118653, -0.6600016680,-0.6586894601, - -0.6573752458, -0.6560590290, -0.6547408137, -0.6534206040,-0.6520984038, - -0.6507742173, -0.6494480483, -0.6481199011, -0.6467897795,-0.6454576877, - -0.6441236298, -0.6427876097, -0.6414496316, -0.6401096995,-0.6387678175, - -0.6374239897, -0.6360782203, -0.6347305132, -0.6333808726,-0.6320293027, - -0.6306758074, -0.6293203910, -0.6279630576, -0.6266038114,-0.6252426563, - -0.6238795967, -0.6225146366, -0.6211477803, -0.6197790318,-0.6184083954, - -0.6170358751, -0.6156614753, -0.6142852001, -0.6129070537,-0.6115270402, - -0.6101451639, -0.6087614290, -0.6073758397, -0.6059884003,-0.6045991149, - -0.6032079877, -0.6018150232, -0.6004202253, -0.5990235985,-0.5976251470, - -0.5962248750, -0.5948227868, -0.5934188866, -0.5920131788,-0.5906056676, - -0.5891963574, -0.5877852523, -0.5863723567, -0.5849576750,-0.5835412114, - -0.5821229702, -0.5807029557, -0.5792811723, -0.5778576244,-0.5764323162, - -0.5750052520, -0.5735764364, -0.5721458734, -0.5707135677,-0.5692795234, - -0.5678437451, -0.5664062369, -0.5649670034, -0.5635260489,-0.5620833779, - -0.5606389946, -0.5591929035, -0.5577451090, -0.5562956155,-0.5548444274, - -0.5533915492, -0.5519369853, -0.5504807401, -0.5490228180,-0.5475632235, - -0.5461019610, -0.5446390350, -0.5431744500, -0.5417082103,-0.5402403205, - -0.5387707850, -0.5372996083, -0.5358267950, -0.5343523494,-0.5328762761, - -0.5313985795, -0.5299192642, -0.5284383347, -0.5269557955,-0.5254716511, - -0.5239859060, -0.5224985647, -0.5210096318, -0.5195191119,-0.5180270094, - -0.5165333289, -0.5150380749, -0.5135412521, -0.5120428649,-0.5105429179, - -0.5090414158, -0.5075383630, -0.5060337641, -0.5045276238,-0.5030199466, - -0.5015107372, -0.5000000000, -0.4984877398, -0.4969739610,-0.4954586684, - -0.4939418666, -0.4924235601, -0.4909037536, -0.4893824517,-0.4878596591, - -0.4863353804, -0.4848096202, -0.4832823833, -0.4817536741,-0.4802234974, - -0.4786918579, -0.4771587603, -0.4756242091, -0.4740882090,-0.4725507649, - -0.4710118812, -0.4694715628, -0.4679298143, -0.4663866403,-0.4648420457, - -0.4632960351, -0.4617486132, -0.4601997848, -0.4586495545,-0.4570979271, - -0.4555449072, -0.4539904997, -0.4524347093, -0.4508775407,-0.4493189986, - -0.4477590878, -0.4461978131, -0.4446351792, -0.4430711908,-0.4415058528, - -0.4399391699, -0.4383711468, -0.4368017884, -0.4352310994,-0.4336590846, - -0.4320857488, -0.4305110968, -0.4289351334, -0.4273578634,-0.4257792916, - -0.4241994227, -0.4226182617, -0.4210358134, -0.4194520824,-0.4178670738, - -0.4162807923, -0.4146932427, -0.4131044298, -0.4115143586,-0.4099230338, - -0.4083304604, -0.4067366431, -0.4051415868, -0.4035452964,-0.4019477767, - -0.4003490326, -0.3987490689, -0.3971478906, -0.3955455026,-0.3939419096, - -0.3923371166, -0.3907311285, -0.3891239501, -0.3875155865,-0.3859060423, - -0.3842953227, -0.3826834324, -0.3810703764, -0.3794561595,-0.3778407868, - -0.3762242631, -0.3746065934, -0.3729877826, -0.3713678356,-0.3697467573, - -0.3681245527, -0.3665012267, -0.3648767843, -0.3632512305,-0.3616245701, - -0.3599968081, -0.3583679495, -0.3567379993, -0.3551069624,-0.3534748438, - -0.3518416484, -0.3502073813, -0.3485720473, -0.3469356516,-0.3452981990, - -0.3436596946, -0.3420201433, -0.3403795502, -0.3387379202,-0.3370952584, - -0.3354515698, -0.3338068592, -0.3321611319, -0.3305143927,-0.3288666467, - -0.3272178990, -0.3255681545, -0.3239174182, -0.3222656952,-0.3206129906, - -0.3189593093, -0.3173046564, -0.3156490369, -0.3139924560,-0.3123349185, - -0.3106764296, -0.3090169944, -0.3073566178, -0.3056953050,-0.3040330609, - -0.3023698908, -0.3007057995, -0.2990407923, -0.2973748741,-0.2957080500, - -0.2940403252, -0.2923717047, -0.2907021936, -0.2890317969,-0.2873605198, - -0.2856883674, -0.2840153447, -0.2823414568, -0.2806667089,-0.2789911060, - -0.2773146533, -0.2756373558, -0.2739592187, -0.2722802470,-0.2706004460, - -0.2689198206, -0.2672383761, -0.2655561175, -0.2638730500,-0.2621891786, - -0.2605045086, -0.2588190451, -0.2571327932, -0.2554457579,-0.2537579446, - -0.2520693582, -0.2503800041, -0.2486898872, -0.2469990127,-0.2453073859, - -0.2436150118, -0.2419218956, -0.2402280425, -0.2385334576,-0.2368381461, - -0.2351421131, -0.2334453639, -0.2317479035, -0.2300497372,-0.2283508701, - -0.2266513074, -0.2249510543, -0.2232501160, -0.2215484976,-0.2198462044, - -0.2181432414, -0.2164396139, -0.2147353272, -0.2130303863,-0.2113247965, - -0.2096185629, -0.2079116908, -0.2062041854, -0.2044960518,-0.2027872954, - -0.2010779211, -0.1993679344, -0.1976573404, -0.1959461442,-0.1942343512, - -0.1925219665, -0.1908089954, -0.1890954430, -0.1873813146,-0.1856666154, - -0.1839513506, -0.1822355255, -0.1805191453, -0.1788022151,-0.1770847403, - -0.1753667261, -0.1736481777, -0.1719291003, -0.1702094992,-0.1684893796, - -0.1667687467, -0.1650476059, -0.1633259622, -0.1616038211,-0.1598811877, - -0.1581580673, -0.1564344650, -0.1547103863, -0.1529858363,-0.1512608202, - -0.1495353434, -0.1478094111, -0.1460830286, -0.1443562010,-0.1426289337, - -0.1409012319, -0.1391731010, -0.1374445460, -0.1357155724,-0.1339861854, - -0.1322563903, -0.1305261922, -0.1287955966, -0.1270646086,-0.1253332336, - -0.1236014767, -0.1218693434, -0.1201368388, -0.1184039683,-0.1166707371, - -0.1149371505, -0.1132032138, -0.1114689322, -0.1097343111,-0.1079993557, - -0.1062640713, -0.1045284633, -0.1027925368, -0.1010562972,-0.0993197497, - -0.0975828998, -0.0958457525, -0.0941083133, -0.0923705874,-0.0906325802, - -0.0888942969, -0.0871557427, -0.0854169231, -0.0836778433,-0.0819385086, - -0.0801989243, -0.0784590957, -0.0767190281, -0.0749787268,-0.0732381971, - -0.0714974443, -0.0697564737, -0.0680152907, -0.0662739004,-0.0645323083, - -0.0627905195, -0.0610485395, -0.0593063736, -0.0575640270,-0.0558215050, - -0.0540788130, -0.0523359562, -0.0505929401, -0.0488497698,-0.0471064507, - -0.0453629881, -0.0436193874, -0.0418756537, -0.0401317925,-0.0383878091, - -0.0366437087, -0.0348994967, -0.0331551784, -0.0314107591,-0.0296662441, - -0.0279216387, -0.0261769483, -0.0244321782, -0.0226873336,-0.0209424199, - -0.0191974424, -0.0174524064, -0.0157073173, -0.0139621803,-0.0122170008, - -0.0104717841, -0.0087265355, -0.0069812603, -0.0052359638,-0.0034906514, + 0.0000000000, 0.0017453284, 0.0034906514, 0.0052359638, + 0.0069812603, 0.0087265355, 0.0104717841, 0.0122170008, 0.0139621803, + 0.0157073173, 0.0174524064, 0.0191974424, 0.0209424199, 0.0226873336, + 0.0244321782, 0.0261769483, 0.0279216387, 0.0296662441, 0.0314107591, + 0.0331551784, 0.0348994967, 0.0366437087, 0.0383878091, 0.0401317925, + 0.0418756537, 0.0436193874, 0.0453629881, 0.0471064507, 0.0488497698, + 0.0505929401, 0.0523359562, 0.0540788130, 0.0558215050, 0.0575640270, + 0.0593063736, 0.0610485395, 0.0627905195, 0.0645323083, 0.0662739004, + 0.0680152907, 0.0697564737, 0.0714974443, 0.0732381971, 0.0749787268, + 0.0767190281, 0.0784590957, 0.0801989243, 0.0819385086, 0.0836778433, + 0.0854169231, 0.0871557427, 0.0888942969, 0.0906325802, 0.0923705874, + 0.0941083133, 0.0958457525, 0.0975828998, 0.0993197497, 0.1010562972, + 0.1027925368, 0.1045284633, 0.1062640713, 0.1079993557, 0.1097343111, + 0.1114689322, 0.1132032138, 0.1149371505, 0.1166707371, 0.1184039683, + 0.1201368388, 0.1218693434, 0.1236014767, 0.1253332336, 0.1270646086, + 0.1287955966, 0.1305261922, 0.1322563903, 0.1339861854, 0.1357155724, + 0.1374445460, 0.1391731010, 0.1409012319, 0.1426289337, 0.1443562010, + 0.1460830286, 0.1478094111, 0.1495353434, 0.1512608202, 0.1529858363, + 0.1547103863, 0.1564344650, 0.1581580673, 0.1598811877, 0.1616038211, + 0.1633259622, 0.1650476059, 0.1667687467, 0.1684893796, 0.1702094992, + 0.1719291003, 0.1736481777, 0.1753667261, 0.1770847403, 0.1788022151, + 0.1805191453, 0.1822355255, 0.1839513506, 0.1856666154, 0.1873813146, + 0.1890954430, 0.1908089954, 0.1925219665, 0.1942343512, 0.1959461442, + 0.1976573404, 0.1993679344, 0.2010779211, 0.2027872954, 0.2044960518, + 0.2062041854, 0.2079116908, 0.2096185629, 0.2113247965, 0.2130303863, + 0.2147353272, 0.2164396139, 0.2181432414, 0.2198462044, 0.2215484976, + 0.2232501160, 0.2249510543, 0.2266513074, 0.2283508701, 0.2300497372, + 0.2317479035, 0.2334453639, 0.2351421131, 0.2368381461, 0.2385334576, + 0.2402280425, 0.2419218956, 0.2436150118, 0.2453073859, 0.2469990127, + 0.2486898872, 0.2503800041, 0.2520693582, 0.2537579446, 0.2554457579, + 0.2571327932, 0.2588190451, 0.2605045086, 0.2621891786, 0.2638730500, + 0.2655561175, 0.2672383761, 0.2689198206, 0.2706004460, 0.2722802470, + 0.2739592187, 0.2756373558, 0.2773146533, 0.2789911060, 0.2806667089, + 0.2823414568, 0.2840153447, 0.2856883674, 0.2873605198, 0.2890317969, + 0.2907021936, 0.2923717047, 0.2940403252, 0.2957080500, 0.2973748741, + 0.2990407923, 0.3007057995, 0.3023698908, 0.3040330609, 0.3056953050, + 0.3073566178, 0.3090169944, 0.3106764296, 0.3123349185, 0.3139924560, + 0.3156490369, 0.3173046564, 0.3189593093, 0.3206129906, 0.3222656952, + 0.3239174182, 0.3255681545, 0.3272178990, 0.3288666467, 0.3305143927, + 0.3321611319, 0.3338068592, 0.3354515698, 0.3370952584, 0.3387379202, + 0.3403795502, 0.3420201433, 0.3436596946, 0.3452981990, 0.3469356516, + 0.3485720473, 0.3502073813, 0.3518416484, 0.3534748438, 0.3551069624, + 0.3567379993, 0.3583679495, 0.3599968081, 0.3616245701, 0.3632512305, + 0.3648767843, 0.3665012267, 0.3681245527, 0.3697467573, 0.3713678356, + 0.3729877826, 0.3746065934, 0.3762242631, 0.3778407868, 0.3794561595, + 0.3810703764, 0.3826834324, 0.3842953227, 0.3859060423, 0.3875155865, + 0.3891239501, 0.3907311285, 0.3923371166, 0.3939419096, 0.3955455026, + 0.3971478906, 0.3987490689, 0.4003490326, 0.4019477767, 0.4035452964, + 0.4051415868, 0.4067366431, 0.4083304604, 0.4099230338, 0.4115143586, + 0.4131044298, 0.4146932427, 0.4162807923, 0.4178670738, 0.4194520824, + 0.4210358134, 0.4226182617, 0.4241994227, 0.4257792916, 0.4273578634, + 0.4289351334, 0.4305110968, 0.4320857488, 0.4336590846, 0.4352310994, + 0.4368017884, 0.4383711468, 0.4399391699, 0.4415058528, 0.4430711908, + 0.4446351792, 0.4461978131, 0.4477590878, 0.4493189986, 0.4508775407, + 0.4524347093, 0.4539904997, 0.4555449072, 0.4570979271, 0.4586495545, + 0.4601997848, 0.4617486132, 0.4632960351, 0.4648420457, 0.4663866403, + 0.4679298143, 0.4694715628, 0.4710118812, 0.4725507649, 0.4740882090, + 0.4756242091, 0.4771587603, 0.4786918579, 0.4802234974, 0.4817536741, + 0.4832823833, 0.4848096202, 0.4863353804, 0.4878596591, 0.4893824517, + 0.4909037536, 0.4924235601, 0.4939418666, 0.4954586684, 0.4969739610, + 0.4984877398, 0.5000000000, 0.5015107372, 0.5030199466, 0.5045276238, + 0.5060337641, 0.5075383630, 0.5090414158, 0.5105429179, 0.5120428649, + 0.5135412521, 0.5150380749, 0.5165333289, 0.5180270094, 0.5195191119, + 0.5210096318, 0.5224985647, 0.5239859060, 0.5254716511, 0.5269557955, + 0.5284383347, 0.5299192642, 0.5313985795, 0.5328762761, 0.5343523494, + 0.5358267950, 0.5372996083, 0.5387707850, 0.5402403205, 0.5417082103, + 0.5431744500, 0.5446390350, 0.5461019610, 0.5475632235, 0.5490228180, + 0.5504807401, 0.5519369853, 0.5533915492, 0.5548444274, 0.5562956155, + 0.5577451090, 0.5591929035, 0.5606389946, 0.5620833779, 0.5635260489, + 0.5649670034, 0.5664062369, 0.5678437451, 0.5692795234, 0.5707135677, + 0.5721458734, 0.5735764364, 0.5750052520, 0.5764323162, 0.5778576244, + 0.5792811723, 0.5807029557, 0.5821229702, 0.5835412114, 0.5849576750, + 0.5863723567, 0.5877852523, 0.5891963574, 0.5906056676, 0.5920131788, + 0.5934188866, 0.5948227868, 0.5962248750, 0.5976251470, 0.5990235985, + 0.6004202253, 0.6018150232, 0.6032079877, 0.6045991149, 0.6059884003, + 0.6073758397, 0.6087614290, 0.6101451639, 0.6115270402, 0.6129070537, + 0.6142852001, 0.6156614753, 0.6170358751, 0.6184083954, 0.6197790318, + 0.6211477803, 0.6225146366, 0.6238795967, 0.6252426563, 0.6266038114, + 0.6279630576, 0.6293203910, 0.6306758074, 0.6320293027, 0.6333808726, + 0.6347305132, 0.6360782203, 0.6374239897, 0.6387678175, 0.6401096995, + 0.6414496316, 0.6427876097, 0.6441236298, 0.6454576877, 0.6467897795, + 0.6481199011, 0.6494480483, 0.6507742173, 0.6520984038, 0.6534206040, + 0.6547408137, 0.6560590290, 0.6573752458, 0.6586894601, 0.6600016680, + 0.6613118653, 0.6626200482, 0.6639262127, 0.6652303547, 0.6665324702, + 0.6678325555, 0.6691306064, 0.6704266190, 0.6717205893, 0.6730125135, + 0.6743023876, 0.6755902076, 0.6768759697, 0.6781596699, 0.6794413043, + 0.6807208690, 0.6819983601, 0.6832737737, 0.6845471059, 0.6858183529, + 0.6870875108, 0.6883545757, 0.6896195437, 0.6908824111, 0.6921431739, + 0.6934018283, 0.6946583705, 0.6959127966, 0.6971651029, 0.6984152854, + 0.6996633405, 0.7009092643, 0.7021530530, 0.7033947028, 0.7046342100, + 0.7058715707, 0.7071067812, 0.7083398377, 0.7095707365, 0.7107994739, + 0.7120260460, 0.7132504492, 0.7144726796, 0.7156927337, 0.7169106077, + 0.7181262978, 0.7193398003, 0.7205511117, 0.7217602281, 0.7229671459, + 0.7241718614, 0.7253743710, 0.7265746710, 0.7277727577, 0.7289686274, + 0.7301622766, 0.7313537016, 0.7325428988, 0.7337298645, 0.7349145951, + 0.7360970871, 0.7372773368, 0.7384553406, 0.7396310950, 0.7408045963, + 0.7419758410, 0.7431448255, 0.7443115462, 0.7454759997, 0.7466381823, + 0.7477980905, 0.7489557208, 0.7501110696, 0.7512641335, 0.7524149089, + 0.7535633923, 0.7547095802, 0.7558534692, 0.7569950557, 0.7581343362, + 0.7592713073, 0.7604059656, 0.7615383075, 0.7626683297, 0.7637960286, + 0.7649214009, 0.7660444431, 0.7671651518, 0.7682835236, 0.7693995550, + 0.7705132428, 0.7716245834, 0.7727335735, 0.7738402097, 0.7749444887, + 0.7760464071, 0.7771459615, 0.7782431485, 0.7793379649, 0.7804304073, + 0.7815204724, 0.7826081569, 0.7836934573, 0.7847763705, 0.7858568932, + 0.7869350220, 0.7880107536, 0.7890840848, 0.7901550124, 0.7912235330, + 0.7922896434, 0.7933533403, 0.7944146205, 0.7954734809, 0.7965299180, + 0.7975839288, 0.7986355100, 0.7996846585, 0.8007313709, 0.8017756442, + 0.8028174752, 0.8038568606, 0.8048937974, 0.8059282822, 0.8069603121, + 0.8079898839, 0.8090169944, 0.8100416404, 0.8110638190, 0.8120835269, + 0.8131007610, 0.8141155184, 0.8151277957, 0.8161375901, 0.8171448983, + 0.8181497174, 0.8191520443, 0.8201518759, 0.8211492091, 0.8221440410, + 0.8231363685, 0.8241261886, 0.8251134983, 0.8260982945, 0.8270805743, + 0.8280603346, 0.8290375726, 0.8300122851, 0.8309844693, 0.8319541221, + 0.8329212407, 0.8338858221, 0.8348478633, 0.8358073614, 0.8367643135, + 0.8377187166, 0.8386705679, 0.8396198645, 0.8405666035, 0.8415107819, + 0.8424523970, 0.8433914458, 0.8443279255, 0.8452618332, 0.8461931661, + 0.8471219214, 0.8480480962, 0.8489716876, 0.8498926930, 0.8508111094, + 0.8517269341, 0.8526401644, 0.8535507973, 0.8544588301, 0.8553642602, + 0.8562670846, 0.8571673007, 0.8580649057, 0.8589598969, 0.8598522716, + 0.8607420270, 0.8616291604, 0.8625136692, 0.8633955506, 0.8642748020, + 0.8651514206, 0.8660254038, 0.8668967489, 0.8677654534, 0.8686315144, + 0.8694949295, 0.8703556959, 0.8712138111, 0.8720692724, 0.8729220773, + 0.8737722230, 0.8746197071, 0.8754645270, 0.8763066800, 0.8771461637, + 0.8779829754, 0.8788171127, 0.8796485729, 0.8804773535, 0.8813034521, + 0.8821268660, 0.8829475929, 0.8837656301, 0.8845809752, 0.8853936258, + 0.8862035792, 0.8870108332, 0.8878153851, 0.8886172327, 0.8894163733, + 0.8902128046, 0.8910065242, 0.8917975296, 0.8925858185, 0.8933713883, + 0.8941542368, 0.8949343616, 0.8957117602, 0.8964864304, 0.8972583697, + 0.8980275758, 0.8987940463, 0.8995577790, 0.9003187714, 0.9010770213, + 0.9018325264, 0.9025852843, 0.9033352929, 0.9040825497, 0.9048270525, + 0.9055687990, 0.9063077870, 0.9070440143, 0.9077774785, 0.9085081775, + 0.9092361090, 0.9099612709, 0.9106836608, 0.9114032766, 0.9121201162, + 0.9128341772, 0.9135454576, 0.9142539552, 0.9149596678, 0.9156625933, + 0.9163627296, 0.9170600744, 0.9177546257, 0.9184463813, 0.9191353393, + 0.9198214973, 0.9205048535, 0.9211854056, 0.9218631516, 0.9225380895, + 0.9232102171, 0.9238795325, 0.9245460336, 0.9252097184, 0.9258705848, + 0.9265286309, 0.9271838546, 0.9278362539, 0.9284858269, 0.9291325715, + 0.9297764859, 0.9304175680, 0.9310558159, 0.9316912276, 0.9323238012, + 0.9329535348, 0.9335804265, 0.9342044743, 0.9348256764, 0.9354440308, + 0.9360595357, 0.9366721892, 0.9372819895, 0.9378889346, 0.9384930228, + 0.9390942521, 0.9396926208, 0.9402881270, 0.9408807690, 0.9414705448, + 0.9420574528, 0.9426414911, 0.9432226579, 0.9438009516, 0.9443763702, + 0.9449489122, 0.9455185756, 0.9460853588, 0.9466492601, 0.9472102777, + 0.9477684100, 0.9483236552, 0.9488760116, 0.9494254776, 0.9499720515, + 0.9505157316, 0.9510565163, 0.9515944039, 0.9521293927, 0.9526614813, + 0.9531906678, 0.9537169507, 0.9542403285, 0.9547607995, 0.9552783621, + 0.9557930148, 0.9563047560, 0.9568135841, 0.9573194975, 0.9578224948, + 0.9583225745, 0.9588197349, 0.9593139745, 0.9598052920, 0.9602936857, + 0.9607791542, 0.9612616959, 0.9617413095, 0.9622179935, 0.9626917464, + 0.9631625668, 0.9636304532, 0.9640954042, 0.9645574185, 0.9650164945, + 0.9654726309, 0.9659258263, 0.9663760793, 0.9668233886, 0.9672677528, + 0.9677091705, 0.9681476404, 0.9685831611, 0.9690157314, 0.9694453499, + 0.9698720153, 0.9702957263, 0.9707164816, 0.9711342799, 0.9715491200, + 0.9719610006, 0.9723699204, 0.9727758782, 0.9731788728, 0.9735789029, + 0.9739759673, 0.9743700648, 0.9747611942, 0.9751493543, 0.9755345439, + 0.9759167619, 0.9762960071, 0.9766722783, 0.9770455744, 0.9774158943, + 0.9777832368, 0.9781476007, 0.9785089851, 0.9788673888, 0.9792228106, + 0.9795752496, 0.9799247046, 0.9802711746, 0.9806146585, 0.9809551553, + 0.9812926640, 0.9816271834, 0.9819587127, 0.9822872507, 0.9826127965, + 0.9829353491, 0.9832549076, 0.9835714708, 0.9838850379, 0.9841956080, + 0.9845031800, 0.9848077530, 0.9851093262, 0.9854078985, 0.9857034691, + 0.9859960371, 0.9862856015, 0.9865721616, 0.9868557164, 0.9871362651, + 0.9874138068, 0.9876883406, 0.9879598658, 0.9882283814, 0.9884938868, + 0.9887563810, 0.9890158634, 0.9892723330, 0.9895257891, 0.9897762309, + 0.9900236577, 0.9902680687, 0.9905094632, 0.9907478405, 0.9909831997, + 0.9912155403, 0.9914448614, 0.9916711624, 0.9918944426, 0.9921147013, + 0.9923319379, 0.9925461516, 0.9927573419, 0.9929655081, 0.9931706495, + 0.9933727656, 0.9935718557, 0.9937679192, 0.9939609555, 0.9941509640, + 0.9943379441, 0.9945218954, 0.9947028171, 0.9948807088, 0.9950555700, + 0.9952274000, 0.9953961984, 0.9955619646, 0.9957246982, 0.9958843986, + 0.9960410654, 0.9961946981, 0.9963452962, 0.9964928592, 0.9966373868, + 0.9967788785, 0.9969173337, 0.9970527522, 0.9971851335, 0.9973144772, + 0.9974407829, 0.9975640503, 0.9976842788, 0.9978014683, 0.9979156183, + 0.9980267284, 0.9981347984, 0.9982398279, 0.9983418166, 0.9984407642, + 0.9985366703, 0.9986295348, 0.9987193572, 0.9988061373, 0.9988898750, + 0.9989705698, 0.9990482216, 0.9991228301, 0.9991943951, 0.9992629164, + 0.9993283938, 0.9993908270, 0.9994502159, 0.9995065604, 0.9995598601, + 0.9996101150, 0.9996573250, 0.9997014898, 0.9997426093, 0.9997806835, + 0.9998157121, 0.9998476952, 0.9998766325, 0.9999025240, 0.9999253697, + 0.9999451694, 0.9999619231, 0.9999756307, 0.9999862922, 0.9999939077, + 0.9999984769, 1.0000000000, 0.9999984769, 0.9999939077, 0.9999862922, + 0.9999756307, 0.9999619231, 0.9999451694, 0.9999253697, 0.9999025240, + 0.9998766325, 0.9998476952, 0.9998157121, 0.9997806835, 0.9997426093, + 0.9997014898, 0.9996573250, 0.9996101150, 0.9995598601, 0.9995065604, + 0.9994502159, 0.9993908270, 0.9993283938, 0.9992629164, 0.9991943951, + 0.9991228301, 0.9990482216, 0.9989705698, 0.9988898750, 0.9988061373, + 0.9987193572, 0.9986295348, 0.9985366703, 0.9984407642, 0.9983418166, + 0.9982398279, 0.9981347984, 0.9980267284, 0.9979156183, 0.9978014683, + 0.9976842788, 0.9975640503, 0.9974407829, 0.9973144772, 0.9971851335, + 0.9970527522, 0.9969173337, 0.9967788785, 0.9966373868, 0.9964928592, + 0.9963452962, 0.9961946981, 0.9960410654, 0.9958843986, 0.9957246982, + 0.9955619646, 0.9953961984, 0.9952274000, 0.9950555700, 0.9948807088, + 0.9947028171, 0.9945218954, 0.9943379441, 0.9941509640, 0.9939609555, + 0.9937679192, 0.9935718557, 0.9933727656, 0.9931706495, 0.9929655081, + 0.9927573419, 0.9925461516, 0.9923319379, 0.9921147013, 0.9918944426, + 0.9916711624, 0.9914448614, 0.9912155403, 0.9909831997, 0.9907478405, + 0.9905094632, 0.9902680687, 0.9900236577, 0.9897762309, 0.9895257891, + 0.9892723330, 0.9890158634, 0.9887563810, 0.9884938868, 0.9882283814, + 0.9879598658, 0.9876883406, 0.9874138068, 0.9871362651, 0.9868557164, + 0.9865721616, 0.9862856015, 0.9859960371, 0.9857034691, 0.9854078985, + 0.9851093262, 0.9848077530, 0.9845031800, 0.9841956080, 0.9838850379, + 0.9835714708, 0.9832549076, 0.9829353491, 0.9826127965, 0.9822872507, + 0.9819587127, 0.9816271834, 0.9812926640, 0.9809551553, 0.9806146585, + 0.9802711746, 0.9799247046, 0.9795752496, 0.9792228106, 0.9788673888, + 0.9785089851, 0.9781476007, 0.9777832368, 0.9774158943, 0.9770455744, + 0.9766722783, 0.9762960071, 0.9759167619, 0.9755345439, 0.9751493543, + 0.9747611942, 0.9743700648, 0.9739759673, 0.9735789029, 0.9731788728, + 0.9727758782, 0.9723699204, 0.9719610006, 0.9715491200, 0.9711342799, + 0.9707164816, 0.9702957263, 0.9698720153, 0.9694453499, 0.9690157314, + 0.9685831611, 0.9681476404, 0.9677091705, 0.9672677528, 0.9668233886, + 0.9663760793, 0.9659258263, 0.9654726309, 0.9650164945, 0.9645574185, + 0.9640954042, 0.9636304532, 0.9631625668, 0.9626917464, 0.9622179935, + 0.9617413095, 0.9612616959, 0.9607791542, 0.9602936857, 0.9598052920, + 0.9593139745, 0.9588197349, 0.9583225745, 0.9578224948, 0.9573194975, + 0.9568135841, 0.9563047560, 0.9557930148, 0.9552783621, 0.9547607995, + 0.9542403285, 0.9537169507, 0.9531906678, 0.9526614813, 0.9521293927, + 0.9515944039, 0.9510565163, 0.9505157316, 0.9499720515, 0.9494254776, + 0.9488760116, 0.9483236552, 0.9477684100, 0.9472102777, 0.9466492601, + 0.9460853588, 0.9455185756, 0.9449489122, 0.9443763702, 0.9438009516, + 0.9432226579, 0.9426414911, 0.9420574528, 0.9414705448, 0.9408807690, + 0.9402881270, 0.9396926208, 0.9390942521, 0.9384930228, 0.9378889346, + 0.9372819895, 0.9366721892, 0.9360595357, 0.9354440308, 0.9348256764, + 0.9342044743, 0.9335804265, 0.9329535348, 0.9323238012, 0.9316912276, + 0.9310558159, 0.9304175680, 0.9297764859, 0.9291325715, 0.9284858269, + 0.9278362539, 0.9271838546, 0.9265286309, 0.9258705848, 0.9252097184, + 0.9245460336, 0.9238795325, 0.9232102171, 0.9225380895, 0.9218631516, + 0.9211854056, 0.9205048535, 0.9198214973, 0.9191353393, 0.9184463813, + 0.9177546257, 0.9170600744, 0.9163627296, 0.9156625933, 0.9149596678, + 0.9142539552, 0.9135454576, 0.9128341772, 0.9121201162, 0.9114032766, + 0.9106836608, 0.9099612709, 0.9092361090, 0.9085081775, 0.9077774785, + 0.9070440143, 0.9063077870, 0.9055687990, 0.9048270525, 0.9040825497, + 0.9033352929, 0.9025852843, 0.9018325264, 0.9010770213, 0.9003187714, + 0.8995577790, 0.8987940463, 0.8980275758, 0.8972583697, 0.8964864304, + 0.8957117602, 0.8949343616, 0.8941542368, 0.8933713883, 0.8925858185, + 0.8917975296, 0.8910065242, 0.8902128046, 0.8894163733, 0.8886172327, + 0.8878153851, 0.8870108332, 0.8862035792, 0.8853936258, 0.8845809752, + 0.8837656301, 0.8829475929, 0.8821268660, 0.8813034521, 0.8804773535, + 0.8796485729, 0.8788171127, 0.8779829754, 0.8771461637, 0.8763066800, + 0.8754645270, 0.8746197071, 0.8737722230, 0.8729220773, 0.8720692724, + 0.8712138111, 0.8703556959, 0.8694949295, 0.8686315144, 0.8677654534, + 0.8668967489, 0.8660254038, 0.8651514206, 0.8642748020, 0.8633955506, + 0.8625136692, 0.8616291604, 0.8607420270, 0.8598522716, 0.8589598969, + 0.8580649057, 0.8571673007, 0.8562670846, 0.8553642602, 0.8544588301, + 0.8535507973, 0.8526401644, 0.8517269341, 0.8508111094, 0.8498926930, + 0.8489716876, 0.8480480962, 0.8471219214, 0.8461931661, 0.8452618332, + 0.8443279255, 0.8433914458, 0.8424523970, 0.8415107819, 0.8405666035, + 0.8396198645, 0.8386705679, 0.8377187166, 0.8367643135, 0.8358073614, + 0.8348478633, 0.8338858221, 0.8329212407, 0.8319541221, 0.8309844693, + 0.8300122851, 0.8290375726, 0.8280603346, 0.8270805743, 0.8260982945, + 0.8251134983, 0.8241261886, 0.8231363685, 0.8221440410, 0.8211492091, + 0.8201518759, 0.8191520443, 0.8181497174, 0.8171448983, 0.8161375901, + 0.8151277957, 0.8141155184, 0.8131007610, 0.8120835269, 0.8110638190, + 0.8100416404, 0.8090169944, 0.8079898839, 0.8069603121, 0.8059282822, + 0.8048937974, 0.8038568606, 0.8028174752, 0.8017756442, 0.8007313709, + 0.7996846585, 0.7986355100, 0.7975839288, 0.7965299180, 0.7954734809, + 0.7944146205, 0.7933533403, 0.7922896434, 0.7912235330, 0.7901550124, + 0.7890840848, 0.7880107536, 0.7869350220, 0.7858568932, 0.7847763705, + 0.7836934573, 0.7826081569, 0.7815204724, 0.7804304073, 0.7793379649, + 0.7782431485, 0.7771459615, 0.7760464071, 0.7749444887, 0.7738402097, + 0.7727335735, 0.7716245834, 0.7705132428, 0.7693995550, 0.7682835236, + 0.7671651518, 0.7660444431, 0.7649214009, 0.7637960286, 0.7626683297, + 0.7615383075, 0.7604059656, 0.7592713073, 0.7581343362, 0.7569950557, + 0.7558534692, 0.7547095802, 0.7535633923, 0.7524149089, 0.7512641335, + 0.7501110696, 0.7489557208, 0.7477980905, 0.7466381823, 0.7454759997, + 0.7443115462, 0.7431448255, 0.7419758410, 0.7408045963, 0.7396310950, + 0.7384553406, 0.7372773368, 0.7360970871, 0.7349145951, 0.7337298645, + 0.7325428988, 0.7313537016, 0.7301622766, 0.7289686274, 0.7277727577, + 0.7265746710, 0.7253743710, 0.7241718614, 0.7229671459, 0.7217602281, + 0.7205511117, 0.7193398003, 0.7181262978, 0.7169106077, 0.7156927337, + 0.7144726796, 0.7132504492, 0.7120260460, 0.7107994739, 0.7095707365, + 0.7083398377, 0.7071067812, 0.7058715707, 0.7046342100, 0.7033947028, + 0.7021530530, 0.7009092643, 0.6996633405, 0.6984152854, 0.6971651029, + 0.6959127966, 0.6946583705, 0.6934018283, 0.6921431739, 0.6908824111, + 0.6896195437, 0.6883545757, 0.6870875108, 0.6858183529, 0.6845471059, + 0.6832737737, 0.6819983601, 0.6807208690, 0.6794413043, 0.6781596699, + 0.6768759697, 0.6755902076, 0.6743023876, 0.6730125135, 0.6717205893, + 0.6704266190, 0.6691306064, 0.6678325555, 0.6665324702, 0.6652303547, + 0.6639262127, 0.6626200482, 0.6613118653, 0.6600016680, 0.6586894601, + 0.6573752458, 0.6560590290, 0.6547408137, 0.6534206040, 0.6520984038, + 0.6507742173, 0.6494480483, 0.6481199011, 0.6467897795, 0.6454576877, + 0.6441236298, 0.6427876097, 0.6414496316, 0.6401096995, 0.6387678175, + 0.6374239897, 0.6360782203, 0.6347305132, 0.6333808726, 0.6320293027, + 0.6306758074, 0.6293203910, 0.6279630576, 0.6266038114, 0.6252426563, + 0.6238795967, 0.6225146366, 0.6211477803, 0.6197790318, 0.6184083954, + 0.6170358751, 0.6156614753, 0.6142852001, 0.6129070537, 0.6115270402, + 0.6101451639, 0.6087614290, 0.6073758397, 0.6059884003, 0.6045991149, + 0.6032079877, 0.6018150232, 0.6004202253, 0.5990235985, 0.5976251470, + 0.5962248750, 0.5948227868, 0.5934188866, 0.5920131788, 0.5906056676, + 0.5891963574, 0.5877852523, 0.5863723567, 0.5849576750, 0.5835412114, + 0.5821229702, 0.5807029557, 0.5792811723, 0.5778576244, 0.5764323162, + 0.5750052520, 0.5735764364, 0.5721458734, 0.5707135677, 0.5692795234, + 0.5678437451, 0.5664062369, 0.5649670034, 0.5635260489, 0.5620833779, + 0.5606389946, 0.5591929035, 0.5577451090, 0.5562956155, 0.5548444274, + 0.5533915492, 0.5519369853, 0.5504807401, 0.5490228180, 0.5475632235, + 0.5461019610, 0.5446390350, 0.5431744500, 0.5417082103, 0.5402403205, + 0.5387707850, 0.5372996083, 0.5358267950, 0.5343523494, 0.5328762761, + 0.5313985795, 0.5299192642, 0.5284383347, 0.5269557955, 0.5254716511, + 0.5239859060, 0.5224985647, 0.5210096318, 0.5195191119, 0.5180270094, + 0.5165333289, 0.5150380749, 0.5135412521, 0.5120428649, 0.5105429179, + 0.5090414158, 0.5075383630, 0.5060337641, 0.5045276238, 0.5030199466, + 0.5015107372, 0.5000000000, 0.4984877398, 0.4969739610, 0.4954586684, + 0.4939418666, 0.4924235601, 0.4909037536, 0.4893824517, 0.4878596591, + 0.4863353804, 0.4848096202, 0.4832823833, 0.4817536741, 0.4802234974, + 0.4786918579, 0.4771587603, 0.4756242091, 0.4740882090, 0.4725507649, + 0.4710118812, 0.4694715628, 0.4679298143, 0.4663866403, 0.4648420457, + 0.4632960351, 0.4617486132, 0.4601997848, 0.4586495545, 0.4570979271, + 0.4555449072, 0.4539904997, 0.4524347093, 0.4508775407, 0.4493189986, + 0.4477590878, 0.4461978131, 0.4446351792, 0.4430711908, 0.4415058528, + 0.4399391699, 0.4383711468, 0.4368017884, 0.4352310994, 0.4336590846, + 0.4320857488, 0.4305110968, 0.4289351334, 0.4273578634, 0.4257792916, + 0.4241994227, 0.4226182617, 0.4210358134, 0.4194520824, 0.4178670738, + 0.4162807923, 0.4146932427, 0.4131044298, 0.4115143586, 0.4099230338, + 0.4083304604, 0.4067366431, 0.4051415868, 0.4035452964, 0.4019477767, + 0.4003490326, 0.3987490689, 0.3971478906, 0.3955455026, 0.3939419096, + 0.3923371166, 0.3907311285, 0.3891239501, 0.3875155865, 0.3859060423, + 0.3842953227, 0.3826834324, 0.3810703764, 0.3794561595, 0.3778407868, + 0.3762242631, 0.3746065934, 0.3729877826, 0.3713678356, 0.3697467573, + 0.3681245527, 0.3665012267, 0.3648767843, 0.3632512305, 0.3616245701, + 0.3599968081, 0.3583679495, 0.3567379993, 0.3551069624, 0.3534748438, + 0.3518416484, 0.3502073813, 0.3485720473, 0.3469356516, 0.3452981990, + 0.3436596946, 0.3420201433, 0.3403795502, 0.3387379202, 0.3370952584, + 0.3354515698, 0.3338068592, 0.3321611319, 0.3305143927, 0.3288666467, + 0.3272178990, 0.3255681545, 0.3239174182, 0.3222656952, 0.3206129906, + 0.3189593093, 0.3173046564, 0.3156490369, 0.3139924560, 0.3123349185, + 0.3106764296, 0.3090169944, 0.3073566178, 0.3056953050, 0.3040330609, + 0.3023698908, 0.3007057995, 0.2990407923, 0.2973748741, 0.2957080500, + 0.2940403252, 0.2923717047, 0.2907021936, 0.2890317969, 0.2873605198, + 0.2856883674, 0.2840153447, 0.2823414568, 0.2806667089, 0.2789911060, + 0.2773146533, 0.2756373558, 0.2739592187, 0.2722802470, 0.2706004460, + 0.2689198206, 0.2672383761, 0.2655561175, 0.2638730500, 0.2621891786, + 0.2605045086, 0.2588190451, 0.2571327932, 0.2554457579, 0.2537579446, + 0.2520693582, 0.2503800041, 0.2486898872, 0.2469990127, 0.2453073859, + 0.2436150118, 0.2419218956, 0.2402280425, 0.2385334576, 0.2368381461, + 0.2351421131, 0.2334453639, 0.2317479035, 0.2300497372, 0.2283508701, + 0.2266513074, 0.2249510543, 0.2232501160, 0.2215484976, 0.2198462044, + 0.2181432414, 0.2164396139, 0.2147353272, 0.2130303863, 0.2113247965, + 0.2096185629, 0.2079116908, 0.2062041854, 0.2044960518, 0.2027872954, + 0.2010779211, 0.1993679344, 0.1976573404, 0.1959461442, 0.1942343512, + 0.1925219665, 0.1908089954, 0.1890954430, 0.1873813146, 0.1856666154, + 0.1839513506, 0.1822355255, 0.1805191453, 0.1788022151, 0.1770847403, + 0.1753667261, 0.1736481777, 0.1719291003, 0.1702094992, 0.1684893796, + 0.1667687467, 0.1650476059, 0.1633259622, 0.1616038211, 0.1598811877, + 0.1581580673, 0.1564344650, 0.1547103863, 0.1529858363, 0.1512608202, + 0.1495353434, 0.1478094111, 0.1460830286, 0.1443562010, 0.1426289337, + 0.1409012319, 0.1391731010, 0.1374445460, 0.1357155724, 0.1339861854, + 0.1322563903, 0.1305261922, 0.1287955966, 0.1270646086, 0.1253332336, + 0.1236014767, 0.1218693434, 0.1201368388, 0.1184039683, 0.1166707371, + 0.1149371505, 0.1132032138, 0.1114689322, 0.1097343111, 0.1079993557, + 0.1062640713, 0.1045284633, 0.1027925368, 0.1010562972, 0.0993197497, + 0.0975828998, 0.0958457525, 0.0941083133, 0.0923705874, 0.0906325802, + 0.0888942969, 0.0871557427, 0.0854169231, 0.0836778433, 0.0819385086, + 0.0801989243, 0.0784590957, 0.0767190281, 0.0749787268, 0.0732381971, + 0.0714974443, 0.0697564737, 0.0680152907, 0.0662739004, 0.0645323083, + 0.0627905195, 0.0610485395, 0.0593063736, 0.0575640270, 0.0558215050, + 0.0540788130, 0.0523359562, 0.0505929401, 0.0488497698, 0.0471064507, + 0.0453629881, 0.0436193874, 0.0418756537, 0.0401317925, 0.0383878091, + 0.0366437087, 0.0348994967, 0.0331551784, 0.0314107591, 0.0296662441, + 0.0279216387, 0.0261769483, 0.0244321782, 0.0226873336, 0.0209424199, + 0.0191974424, 0.0174524064, 0.0157073173, 0.0139621803, 0.0122170008, + 0.0104717841, 0.0087265355, 0.0069812603, 0.0052359638, 0.0034906514, + 0.0017453284, 0.0000000000, -0.0017453284, -0.0034906514,-0.0052359638, + -0.0069812603, -0.0087265355, -0.0104717841, -0.0122170008,-0.0139621803, + -0.0157073173, -0.0174524064, -0.0191974424, -0.0209424199,-0.0226873336, + -0.0244321782, -0.0261769483, -0.0279216387, -0.0296662441,-0.0314107591, + -0.0331551784, -0.0348994967, -0.0366437087, -0.0383878091,-0.0401317925, + -0.0418756537, -0.0436193874, -0.0453629881, -0.0471064507,-0.0488497698, + -0.0505929401, -0.0523359562, -0.0540788130, -0.0558215050,-0.0575640270, + -0.0593063736, -0.0610485395, -0.0627905195, -0.0645323083,-0.0662739004, + -0.0680152907, -0.0697564737, -0.0714974443, -0.0732381971,-0.0749787268, + -0.0767190281, -0.0784590957, -0.0801989243, -0.0819385086,-0.0836778433, + -0.0854169231, -0.0871557427, -0.0888942969, -0.0906325802,-0.0923705874, + -0.0941083133, -0.0958457525, -0.0975828998, -0.0993197497,-0.1010562972, + -0.1027925368, -0.1045284633, -0.1062640713, -0.1079993557,-0.1097343111, + -0.1114689322, -0.1132032138, -0.1149371505, -0.1166707371,-0.1184039683, + -0.1201368388, -0.1218693434, -0.1236014767, -0.1253332336,-0.1270646086, + -0.1287955966, -0.1305261922, -0.1322563903, -0.1339861854,-0.1357155724, + -0.1374445460, -0.1391731010, -0.1409012319, -0.1426289337,-0.1443562010, + -0.1460830286, -0.1478094111, -0.1495353434, -0.1512608202,-0.1529858363, + -0.1547103863, -0.1564344650, -0.1581580673, -0.1598811877,-0.1616038211, + -0.1633259622, -0.1650476059, -0.1667687467, -0.1684893796,-0.1702094992, + -0.1719291003, -0.1736481777, -0.1753667261, -0.1770847403,-0.1788022151, + -0.1805191453, -0.1822355255, -0.1839513506, -0.1856666154,-0.1873813146, + -0.1890954430, -0.1908089954, -0.1925219665, -0.1942343512,-0.1959461442, + -0.1976573404, -0.1993679344, -0.2010779211, -0.2027872954,-0.2044960518, + -0.2062041854, -0.2079116908, -0.2096185629, -0.2113247965,-0.2130303863, + -0.2147353272, -0.2164396139, -0.2181432414, -0.2198462044,-0.2215484976, + -0.2232501160, -0.2249510543, -0.2266513074, -0.2283508701,-0.2300497372, + -0.2317479035, -0.2334453639, -0.2351421131, -0.2368381461,-0.2385334576, + -0.2402280425, -0.2419218956, -0.2436150118, -0.2453073859,-0.2469990127, + -0.2486898872, -0.2503800041, -0.2520693582, -0.2537579446,-0.2554457579, + -0.2571327932, -0.2588190451, -0.2605045086, -0.2621891786,-0.2638730500, + -0.2655561175, -0.2672383761, -0.2689198206, -0.2706004460,-0.2722802470, + -0.2739592187, -0.2756373558, -0.2773146533, -0.2789911060,-0.2806667089, + -0.2823414568, -0.2840153447, -0.2856883674, -0.2873605198,-0.2890317969, + -0.2907021936, -0.2923717047, -0.2940403252, -0.2957080500,-0.2973748741, + -0.2990407923, -0.3007057995, -0.3023698908, -0.3040330609,-0.3056953050, + -0.3073566178, -0.3090169944, -0.3106764296, -0.3123349185,-0.3139924560, + -0.3156490369, -0.3173046564, -0.3189593093, -0.3206129906,-0.3222656952, + -0.3239174182, -0.3255681545, -0.3272178990, -0.3288666467,-0.3305143927, + -0.3321611319, -0.3338068592, -0.3354515698, -0.3370952584,-0.3387379202, + -0.3403795502, -0.3420201433, -0.3436596946, -0.3452981990,-0.3469356516, + -0.3485720473, -0.3502073813, -0.3518416484, -0.3534748438,-0.3551069624, + -0.3567379993, -0.3583679495, -0.3599968081, -0.3616245701,-0.3632512305, + -0.3648767843, -0.3665012267, -0.3681245527, -0.3697467573,-0.3713678356, + -0.3729877826, -0.3746065934, -0.3762242631, -0.3778407868,-0.3794561595, + -0.3810703764, -0.3826834324, -0.3842953227, -0.3859060423,-0.3875155865, + -0.3891239501, -0.3907311285, -0.3923371166, -0.3939419096,-0.3955455026, + -0.3971478906, -0.3987490689, -0.4003490326, -0.4019477767,-0.4035452964, + -0.4051415868, -0.4067366431, -0.4083304604, -0.4099230338,-0.4115143586, + -0.4131044298, -0.4146932427, -0.4162807923, -0.4178670738,-0.4194520824, + -0.4210358134, -0.4226182617, -0.4241994227, -0.4257792916,-0.4273578634, + -0.4289351334, -0.4305110968, -0.4320857488, -0.4336590846,-0.4352310994, + -0.4368017884, -0.4383711468, -0.4399391699, -0.4415058528,-0.4430711908, + -0.4446351792, -0.4461978131, -0.4477590878, -0.4493189986,-0.4508775407, + -0.4524347093, -0.4539904997, -0.4555449072, -0.4570979271,-0.4586495545, + -0.4601997848, -0.4617486132, -0.4632960351, -0.4648420457,-0.4663866403, + -0.4679298143, -0.4694715628, -0.4710118812, -0.4725507649,-0.4740882090, + -0.4756242091, -0.4771587603, -0.4786918579, -0.4802234974,-0.4817536741, + -0.4832823833, -0.4848096202, -0.4863353804, -0.4878596591,-0.4893824517, + -0.4909037536, -0.4924235601, -0.4939418666, -0.4954586684,-0.4969739610, + -0.4984877398, -0.5000000000, -0.5015107372, -0.5030199466,-0.5045276238, + -0.5060337641, -0.5075383630, -0.5090414158, -0.5105429179,-0.5120428649, + -0.5135412521, -0.5150380749, -0.5165333289, -0.5180270094,-0.5195191119, + -0.5210096318, -0.5224985647, -0.5239859060, -0.5254716511,-0.5269557955, + -0.5284383347, -0.5299192642, -0.5313985795, -0.5328762761,-0.5343523494, + -0.5358267950, -0.5372996083, -0.5387707850, -0.5402403205,-0.5417082103, + -0.5431744500, -0.5446390350, -0.5461019610, -0.5475632235,-0.5490228180, + -0.5504807401, -0.5519369853, -0.5533915492, -0.5548444274,-0.5562956155, + -0.5577451090, -0.5591929035, -0.5606389946, -0.5620833779,-0.5635260489, + -0.5649670034, -0.5664062369, -0.5678437451, -0.5692795234,-0.5707135677, + -0.5721458734, -0.5735764364, -0.5750052520, -0.5764323162,-0.5778576244, + -0.5792811723, -0.5807029557, -0.5821229702, -0.5835412114,-0.5849576750, + -0.5863723567, -0.5877852523, -0.5891963574, -0.5906056676,-0.5920131788, + -0.5934188866, -0.5948227868, -0.5962248750, -0.5976251470,-0.5990235985, + -0.6004202253, -0.6018150232, -0.6032079877, -0.6045991149,-0.6059884003, + -0.6073758397, -0.6087614290, -0.6101451639, -0.6115270402,-0.6129070537, + -0.6142852001, -0.6156614753, -0.6170358751, -0.6184083954,-0.6197790318, + -0.6211477803, -0.6225146366, -0.6238795967, -0.6252426563,-0.6266038114, + -0.6279630576, -0.6293203910, -0.6306758074, -0.6320293027,-0.6333808726, + -0.6347305132, -0.6360782203, -0.6374239897, -0.6387678175,-0.6401096995, + -0.6414496316, -0.6427876097, -0.6441236298, -0.6454576877,-0.6467897795, + -0.6481199011, -0.6494480483, -0.6507742173, -0.6520984038,-0.6534206040, + -0.6547408137, -0.6560590290, -0.6573752458, -0.6586894601,-0.6600016680, + -0.6613118653, -0.6626200482, -0.6639262127, -0.6652303547,-0.6665324702, + -0.6678325555, -0.6691306064, -0.6704266190, -0.6717205893,-0.6730125135, + -0.6743023876, -0.6755902076, -0.6768759697, -0.6781596699,-0.6794413043, + -0.6807208690, -0.6819983601, -0.6832737737, -0.6845471059,-0.6858183529, + -0.6870875108, -0.6883545757, -0.6896195437, -0.6908824111,-0.6921431739, + -0.6934018283, -0.6946583705, -0.6959127966, -0.6971651029,-0.6984152854, + -0.6996633405, -0.7009092643, -0.7021530530, -0.7033947028,-0.7046342100, + -0.7058715707, -0.7071067812, -0.7083398377, -0.7095707365,-0.7107994739, + -0.7120260460, -0.7132504492, -0.7144726796, -0.7156927337,-0.7169106077, + -0.7181262978, -0.7193398003, -0.7205511117, -0.7217602281,-0.7229671459, + -0.7241718614, -0.7253743710, -0.7265746710, -0.7277727577,-0.7289686274, + -0.7301622766, -0.7313537016, -0.7325428988, -0.7337298645,-0.7349145951, + -0.7360970871, -0.7372773368, -0.7384553406, -0.7396310950,-0.7408045963, + -0.7419758410, -0.7431448255, -0.7443115462, -0.7454759997,-0.7466381823, + -0.7477980905, -0.7489557208, -0.7501110696, -0.7512641335,-0.7524149089, + -0.7535633923, -0.7547095802, -0.7558534692, -0.7569950557,-0.7581343362, + -0.7592713073, -0.7604059656, -0.7615383075, -0.7626683297,-0.7637960286, + -0.7649214009, -0.7660444431, -0.7671651518, -0.7682835236,-0.7693995550, + -0.7705132428, -0.7716245834, -0.7727335735, -0.7738402097,-0.7749444887, + -0.7760464071, -0.7771459615, -0.7782431485, -0.7793379649,-0.7804304073, + -0.7815204724, -0.7826081569, -0.7836934573, -0.7847763705,-0.7858568932, + -0.7869350220, -0.7880107536, -0.7890840848, -0.7901550124,-0.7912235330, + -0.7922896434, -0.7933533403, -0.7944146205, -0.7954734809,-0.7965299180, + -0.7975839288, -0.7986355100, -0.7996846585, -0.8007313709,-0.8017756442, + -0.8028174752, -0.8038568606, -0.8048937974, -0.8059282822,-0.8069603121, + -0.8079898839, -0.8090169944, -0.8100416404, -0.8110638190,-0.8120835269, + -0.8131007610, -0.8141155184, -0.8151277957, -0.8161375901,-0.8171448983, + -0.8181497174, -0.8191520443, -0.8201518759, -0.8211492091,-0.8221440410, + -0.8231363685, -0.8241261886, -0.8251134983, -0.8260982945,-0.8270805743, + -0.8280603346, -0.8290375726, -0.8300122851, -0.8309844693,-0.8319541221, + -0.8329212407, -0.8338858221, -0.8348478633, -0.8358073614,-0.8367643135, + -0.8377187166, -0.8386705679, -0.8396198645, -0.8405666035,-0.8415107819, + -0.8424523970, -0.8433914458, -0.8443279255, -0.8452618332,-0.8461931661, + -0.8471219214, -0.8480480962, -0.8489716876, -0.8498926930,-0.8508111094, + -0.8517269341, -0.8526401644, -0.8535507973, -0.8544588301,-0.8553642602, + -0.8562670846, -0.8571673007, -0.8580649057, -0.8589598969,-0.8598522716, + -0.8607420270, -0.8616291604, -0.8625136692, -0.8633955506,-0.8642748020, + -0.8651514206, -0.8660254038, -0.8668967489, -0.8677654534,-0.8686315144, + -0.8694949295, -0.8703556959, -0.8712138111, -0.8720692724,-0.8729220773, + -0.8737722230, -0.8746197071, -0.8754645270, -0.8763066800,-0.8771461637, + -0.8779829754, -0.8788171127, -0.8796485729, -0.8804773535,-0.8813034521, + -0.8821268660, -0.8829475929, -0.8837656301, -0.8845809752,-0.8853936258, + -0.8862035792, -0.8870108332, -0.8878153851, -0.8886172327,-0.8894163733, + -0.8902128046, -0.8910065242, -0.8917975296, -0.8925858185,-0.8933713883, + -0.8941542368, -0.8949343616, -0.8957117602, -0.8964864304,-0.8972583697, + -0.8980275758, -0.8987940463, -0.8995577790, -0.9003187714,-0.9010770213, + -0.9018325264, -0.9025852843, -0.9033352929, -0.9040825497,-0.9048270525, + -0.9055687990, -0.9063077870, -0.9070440143, -0.9077774785,-0.9085081775, + -0.9092361090, -0.9099612709, -0.9106836608, -0.9114032766,-0.9121201162, + -0.9128341772, -0.9135454576, -0.9142539552, -0.9149596678,-0.9156625933, + -0.9163627296, -0.9170600744, -0.9177546257, -0.9184463813,-0.9191353393, + -0.9198214973, -0.9205048535, -0.9211854056, -0.9218631516,-0.9225380895, + -0.9232102171, -0.9238795325, -0.9245460336, -0.9252097184,-0.9258705848, + -0.9265286309, -0.9271838546, -0.9278362539, -0.9284858269,-0.9291325715, + -0.9297764859, -0.9304175680, -0.9310558159, -0.9316912276,-0.9323238012, + -0.9329535348, -0.9335804265, -0.9342044743, -0.9348256764,-0.9354440308, + -0.9360595357, -0.9366721892, -0.9372819895, -0.9378889346,-0.9384930228, + -0.9390942521, -0.9396926208, -0.9402881270, -0.9408807690,-0.9414705448, + -0.9420574528, -0.9426414911, -0.9432226579, -0.9438009516,-0.9443763702, + -0.9449489122, -0.9455185756, -0.9460853588, -0.9466492601,-0.9472102777, + -0.9477684100, -0.9483236552, -0.9488760116, -0.9494254776,-0.9499720515, + -0.9505157316, -0.9510565163, -0.9515944039, -0.9521293927,-0.9526614813, + -0.9531906678, -0.9537169507, -0.9542403285, -0.9547607995,-0.9552783621, + -0.9557930148, -0.9563047560, -0.9568135841, -0.9573194975,-0.9578224948, + -0.9583225745, -0.9588197349, -0.9593139745, -0.9598052920,-0.9602936857, + -0.9607791542, -0.9612616959, -0.9617413095, -0.9622179935,-0.9626917464, + -0.9631625668, -0.9636304532, -0.9640954042, -0.9645574185,-0.9650164945, + -0.9654726309, -0.9659258263, -0.9663760793, -0.9668233886,-0.9672677528, + -0.9677091705, -0.9681476404, -0.9685831611, -0.9690157314,-0.9694453499, + -0.9698720153, -0.9702957263, -0.9707164816, -0.9711342799,-0.9715491200, + -0.9719610006, -0.9723699204, -0.9727758782, -0.9731788728,-0.9735789029, + -0.9739759673, -0.9743700648, -0.9747611942, -0.9751493543,-0.9755345439, + -0.9759167619, -0.9762960071, -0.9766722783, -0.9770455744,-0.9774158943, + -0.9777832368, -0.9781476007, -0.9785089851, -0.9788673888,-0.9792228106, + -0.9795752496, -0.9799247046, -0.9802711746, -0.9806146585,-0.9809551553, + -0.9812926640, -0.9816271834, -0.9819587127, -0.9822872507,-0.9826127965, + -0.9829353491, -0.9832549076, -0.9835714708, -0.9838850379,-0.9841956080, + -0.9845031800, -0.9848077530, -0.9851093262, -0.9854078985,-0.9857034691, + -0.9859960371, -0.9862856015, -0.9865721616, -0.9868557164,-0.9871362651, + -0.9874138068, -0.9876883406, -0.9879598658, -0.9882283814,-0.9884938868, + -0.9887563810, -0.9890158634, -0.9892723330, -0.9895257891,-0.9897762309, + -0.9900236577, -0.9902680687, -0.9905094632, -0.9907478405,-0.9909831997, + -0.9912155403, -0.9914448614, -0.9916711624, -0.9918944426,-0.9921147013, + -0.9923319379, -0.9925461516, -0.9927573419, -0.9929655081,-0.9931706495, + -0.9933727656, -0.9935718557, -0.9937679192, -0.9939609555,-0.9941509640, + -0.9943379441, -0.9945218954, -0.9947028171, -0.9948807088,-0.9950555700, + -0.9952274000, -0.9953961984, -0.9955619646, -0.9957246982,-0.9958843986, + -0.9960410654, -0.9961946981, -0.9963452962, -0.9964928592,-0.9966373868, + -0.9967788785, -0.9969173337, -0.9970527522, -0.9971851335,-0.9973144772, + -0.9974407829, -0.9975640503, -0.9976842788, -0.9978014683,-0.9979156183, + -0.9980267284, -0.9981347984, -0.9982398279, -0.9983418166,-0.9984407642, + -0.9985366703, -0.9986295348, -0.9987193572, -0.9988061373,-0.9988898750, + -0.9989705698, -0.9990482216, -0.9991228301, -0.9991943951,-0.9992629164, + -0.9993283938, -0.9993908270, -0.9994502159, -0.9995065604,-0.9995598601, + -0.9996101150, -0.9996573250, -0.9997014898, -0.9997426093,-0.9997806835, + -0.9998157121, -0.9998476952, -0.9998766325, -0.9999025240,-0.9999253697, + -0.9999451694, -0.9999619231, -0.9999756307, -0.9999862922,-0.9999939077, + -0.9999984769, -1.0000000000, -0.9999984769, -0.9999939077,-0.9999862922, + -0.9999756307, -0.9999619231, -0.9999451694, -0.9999253697,-0.9999025240, + -0.9998766325, -0.9998476952, -0.9998157121, -0.9997806835,-0.9997426093, + -0.9997014898, -0.9996573250, -0.9996101150, -0.9995598601,-0.9995065604, + -0.9994502159, -0.9993908270, -0.9993283938, -0.9992629164,-0.9991943951, + -0.9991228301, -0.9990482216, -0.9989705698, -0.9988898750,-0.9988061373, + -0.9987193572, -0.9986295348, -0.9985366703, -0.9984407642,-0.9983418166, + -0.9982398279, -0.9981347984, -0.9980267284, -0.9979156183,-0.9978014683, + -0.9976842788, -0.9975640503, -0.9974407829, -0.9973144772,-0.9971851335, + -0.9970527522, -0.9969173337, -0.9967788785, -0.9966373868,-0.9964928592, + -0.9963452962, -0.9961946981, -0.9960410654, -0.9958843986,-0.9957246982, + -0.9955619646, -0.9953961984, -0.9952274000, -0.9950555700,-0.9948807088, + -0.9947028171, -0.9945218954, -0.9943379441, -0.9941509640,-0.9939609555, + -0.9937679192, -0.9935718557, -0.9933727656, -0.9931706495,-0.9929655081, + -0.9927573419, -0.9925461516, -0.9923319379, -0.9921147013,-0.9918944426, + -0.9916711624, -0.9914448614, -0.9912155403, -0.9909831997,-0.9907478405, + -0.9905094632, -0.9902680687, -0.9900236577, -0.9897762309,-0.9895257891, + -0.9892723330, -0.9890158634, -0.9887563810, -0.9884938868,-0.9882283814, + -0.9879598658, -0.9876883406, -0.9874138068, -0.9871362651,-0.9868557164, + -0.9865721616, -0.9862856015, -0.9859960371, -0.9857034691,-0.9854078985, + -0.9851093262, -0.9848077530, -0.9845031800, -0.9841956080,-0.9838850379, + -0.9835714708, -0.9832549076, -0.9829353491, -0.9826127965,-0.9822872507, + -0.9819587127, -0.9816271834, -0.9812926640, -0.9809551553,-0.9806146585, + -0.9802711746, -0.9799247046, -0.9795752496, -0.9792228106,-0.9788673888, + -0.9785089851, -0.9781476007, -0.9777832368, -0.9774158943,-0.9770455744, + -0.9766722783, -0.9762960071, -0.9759167619, -0.9755345439,-0.9751493543, + -0.9747611942, -0.9743700648, -0.9739759673, -0.9735789029,-0.9731788728, + -0.9727758782, -0.9723699204, -0.9719610006, -0.9715491200,-0.9711342799, + -0.9707164816, -0.9702957263, -0.9698720153, -0.9694453499,-0.9690157314, + -0.9685831611, -0.9681476404, -0.9677091705, -0.9672677528,-0.9668233886, + -0.9663760793, -0.9659258263, -0.9654726309, -0.9650164945,-0.9645574185, + -0.9640954042, -0.9636304532, -0.9631625668, -0.9626917464,-0.9622179935, + -0.9617413095, -0.9612616959, -0.9607791542, -0.9602936857,-0.9598052920, + -0.9593139745, -0.9588197349, -0.9583225745, -0.9578224948,-0.9573194975, + -0.9568135841, -0.9563047560, -0.9557930148, -0.9552783621,-0.9547607995, + -0.9542403285, -0.9537169507, -0.9531906678, -0.9526614813,-0.9521293927, + -0.9515944039, -0.9510565163, -0.9505157316, -0.9499720515,-0.9494254776, + -0.9488760116, -0.9483236552, -0.9477684100, -0.9472102777,-0.9466492601, + -0.9460853588, -0.9455185756, -0.9449489122, -0.9443763702,-0.9438009516, + -0.9432226579, -0.9426414911, -0.9420574528, -0.9414705448,-0.9408807690, + -0.9402881270, -0.9396926208, -0.9390942521, -0.9384930228,-0.9378889346, + -0.9372819895, -0.9366721892, -0.9360595357, -0.9354440308,-0.9348256764, + -0.9342044743, -0.9335804265, -0.9329535348, -0.9323238012,-0.9316912276, + -0.9310558159, -0.9304175680, -0.9297764859, -0.9291325715,-0.9284858269, + -0.9278362539, -0.9271838546, -0.9265286309, -0.9258705848,-0.9252097184, + -0.9245460336, -0.9238795325, -0.9232102171, -0.9225380895,-0.9218631516, + -0.9211854056, -0.9205048535, -0.9198214973, -0.9191353393,-0.9184463813, + -0.9177546257, -0.9170600744, -0.9163627296, -0.9156625933,-0.9149596678, + -0.9142539552, -0.9135454576, -0.9128341772, -0.9121201162,-0.9114032766, + -0.9106836608, -0.9099612709, -0.9092361090, -0.9085081775,-0.9077774785, + -0.9070440143, -0.9063077870, -0.9055687990, -0.9048270525,-0.9040825497, + -0.9033352929, -0.9025852843, -0.9018325264, -0.9010770213,-0.9003187714, + -0.8995577790, -0.8987940463, -0.8980275758, -0.8972583697,-0.8964864304, + -0.8957117602, -0.8949343616, -0.8941542368, -0.8933713883,-0.8925858185, + -0.8917975296, -0.8910065242, -0.8902128046, -0.8894163733,-0.8886172327, + -0.8878153851, -0.8870108332, -0.8862035792, -0.8853936258,-0.8845809752, + -0.8837656301, -0.8829475929, -0.8821268660, -0.8813034521,-0.8804773535, + -0.8796485729, -0.8788171127, -0.8779829754, -0.8771461637,-0.8763066800, + -0.8754645270, -0.8746197071, -0.8737722230, -0.8729220773,-0.8720692724, + -0.8712138111, -0.8703556959, -0.8694949295, -0.8686315144,-0.8677654534, + -0.8668967489, -0.8660254038, -0.8651514206, -0.8642748020,-0.8633955506, + -0.8625136692, -0.8616291604, -0.8607420270, -0.8598522716,-0.8589598969, + -0.8580649057, -0.8571673007, -0.8562670846, -0.8553642602,-0.8544588301, + -0.8535507973, -0.8526401644, -0.8517269341, -0.8508111094,-0.8498926930, + -0.8489716876, -0.8480480962, -0.8471219214, -0.8461931661,-0.8452618332, + -0.8443279255, -0.8433914458, -0.8424523970, -0.8415107819,-0.8405666035, + -0.8396198645, -0.8386705679, -0.8377187166, -0.8367643135,-0.8358073614, + -0.8348478633, -0.8338858221, -0.8329212407, -0.8319541221,-0.8309844693, + -0.8300122851, -0.8290375726, -0.8280603346, -0.8270805743,-0.8260982945, + -0.8251134983, -0.8241261886, -0.8231363685, -0.8221440410,-0.8211492091, + -0.8201518759, -0.8191520443, -0.8181497174, -0.8171448983,-0.8161375901, + -0.8151277957, -0.8141155184, -0.8131007610, -0.8120835269,-0.8110638190, + -0.8100416404, -0.8090169944, -0.8079898839, -0.8069603121,-0.8059282822, + -0.8048937974, -0.8038568606, -0.8028174752, -0.8017756442,-0.8007313709, + -0.7996846585, -0.7986355100, -0.7975839288, -0.7965299180,-0.7954734809, + -0.7944146205, -0.7933533403, -0.7922896434, -0.7912235330,-0.7901550124, + -0.7890840848, -0.7880107536, -0.7869350220, -0.7858568932,-0.7847763705, + -0.7836934573, -0.7826081569, -0.7815204724, -0.7804304073,-0.7793379649, + -0.7782431485, -0.7771459615, -0.7760464071, -0.7749444887,-0.7738402097, + -0.7727335735, -0.7716245834, -0.7705132428, -0.7693995550,-0.7682835236, + -0.7671651518, -0.7660444431, -0.7649214009, -0.7637960286,-0.7626683297, + -0.7615383075, -0.7604059656, -0.7592713073, -0.7581343362,-0.7569950557, + -0.7558534692, -0.7547095802, -0.7535633923, -0.7524149089,-0.7512641335, + -0.7501110696, -0.7489557208, -0.7477980905, -0.7466381823,-0.7454759997, + -0.7443115462, -0.7431448255, -0.7419758410, -0.7408045963,-0.7396310950, + -0.7384553406, -0.7372773368, -0.7360970871, -0.7349145951,-0.7337298645, + -0.7325428988, -0.7313537016, -0.7301622766, -0.7289686274,-0.7277727577, + -0.7265746710, -0.7253743710, -0.7241718614, -0.7229671459,-0.7217602281, + -0.7205511117, -0.7193398003, -0.7181262978, -0.7169106077,-0.7156927337, + -0.7144726796, -0.7132504492, -0.7120260460, -0.7107994739,-0.7095707365, + -0.7083398377, -0.7071067812, -0.7058715707, -0.7046342100,-0.7033947028, + -0.7021530530, -0.7009092643, -0.6996633405, -0.6984152854,-0.6971651029, + -0.6959127966, -0.6946583705, -0.6934018283, -0.6921431739,-0.6908824111, + -0.6896195437, -0.6883545757, -0.6870875108, -0.6858183529,-0.6845471059, + -0.6832737737, -0.6819983601, -0.6807208690, -0.6794413043,-0.6781596699, + -0.6768759697, -0.6755902076, -0.6743023876, -0.6730125135,-0.6717205893, + -0.6704266190, -0.6691306064, -0.6678325555, -0.6665324702,-0.6652303547, + -0.6639262127, -0.6626200482, -0.6613118653, -0.6600016680,-0.6586894601, + -0.6573752458, -0.6560590290, -0.6547408137, -0.6534206040,-0.6520984038, + -0.6507742173, -0.6494480483, -0.6481199011, -0.6467897795,-0.6454576877, + -0.6441236298, -0.6427876097, -0.6414496316, -0.6401096995,-0.6387678175, + -0.6374239897, -0.6360782203, -0.6347305132, -0.6333808726,-0.6320293027, + -0.6306758074, -0.6293203910, -0.6279630576, -0.6266038114,-0.6252426563, + -0.6238795967, -0.6225146366, -0.6211477803, -0.6197790318,-0.6184083954, + -0.6170358751, -0.6156614753, -0.6142852001, -0.6129070537,-0.6115270402, + -0.6101451639, -0.6087614290, -0.6073758397, -0.6059884003,-0.6045991149, + -0.6032079877, -0.6018150232, -0.6004202253, -0.5990235985,-0.5976251470, + -0.5962248750, -0.5948227868, -0.5934188866, -0.5920131788,-0.5906056676, + -0.5891963574, -0.5877852523, -0.5863723567, -0.5849576750,-0.5835412114, + -0.5821229702, -0.5807029557, -0.5792811723, -0.5778576244,-0.5764323162, + -0.5750052520, -0.5735764364, -0.5721458734, -0.5707135677,-0.5692795234, + -0.5678437451, -0.5664062369, -0.5649670034, -0.5635260489,-0.5620833779, + -0.5606389946, -0.5591929035, -0.5577451090, -0.5562956155,-0.5548444274, + -0.5533915492, -0.5519369853, -0.5504807401, -0.5490228180,-0.5475632235, + -0.5461019610, -0.5446390350, -0.5431744500, -0.5417082103,-0.5402403205, + -0.5387707850, -0.5372996083, -0.5358267950, -0.5343523494,-0.5328762761, + -0.5313985795, -0.5299192642, -0.5284383347, -0.5269557955,-0.5254716511, + -0.5239859060, -0.5224985647, -0.5210096318, -0.5195191119,-0.5180270094, + -0.5165333289, -0.5150380749, -0.5135412521, -0.5120428649,-0.5105429179, + -0.5090414158, -0.5075383630, -0.5060337641, -0.5045276238,-0.5030199466, + -0.5015107372, -0.5000000000, -0.4984877398, -0.4969739610,-0.4954586684, + -0.4939418666, -0.4924235601, -0.4909037536, -0.4893824517,-0.4878596591, + -0.4863353804, -0.4848096202, -0.4832823833, -0.4817536741,-0.4802234974, + -0.4786918579, -0.4771587603, -0.4756242091, -0.4740882090,-0.4725507649, + -0.4710118812, -0.4694715628, -0.4679298143, -0.4663866403,-0.4648420457, + -0.4632960351, -0.4617486132, -0.4601997848, -0.4586495545,-0.4570979271, + -0.4555449072, -0.4539904997, -0.4524347093, -0.4508775407,-0.4493189986, + -0.4477590878, -0.4461978131, -0.4446351792, -0.4430711908,-0.4415058528, + -0.4399391699, -0.4383711468, -0.4368017884, -0.4352310994,-0.4336590846, + -0.4320857488, -0.4305110968, -0.4289351334, -0.4273578634,-0.4257792916, + -0.4241994227, -0.4226182617, -0.4210358134, -0.4194520824,-0.4178670738, + -0.4162807923, -0.4146932427, -0.4131044298, -0.4115143586,-0.4099230338, + -0.4083304604, -0.4067366431, -0.4051415868, -0.4035452964,-0.4019477767, + -0.4003490326, -0.3987490689, -0.3971478906, -0.3955455026,-0.3939419096, + -0.3923371166, -0.3907311285, -0.3891239501, -0.3875155865,-0.3859060423, + -0.3842953227, -0.3826834324, -0.3810703764, -0.3794561595,-0.3778407868, + -0.3762242631, -0.3746065934, -0.3729877826, -0.3713678356,-0.3697467573, + -0.3681245527, -0.3665012267, -0.3648767843, -0.3632512305,-0.3616245701, + -0.3599968081, -0.3583679495, -0.3567379993, -0.3551069624,-0.3534748438, + -0.3518416484, -0.3502073813, -0.3485720473, -0.3469356516,-0.3452981990, + -0.3436596946, -0.3420201433, -0.3403795502, -0.3387379202,-0.3370952584, + -0.3354515698, -0.3338068592, -0.3321611319, -0.3305143927,-0.3288666467, + -0.3272178990, -0.3255681545, -0.3239174182, -0.3222656952,-0.3206129906, + -0.3189593093, -0.3173046564, -0.3156490369, -0.3139924560,-0.3123349185, + -0.3106764296, -0.3090169944, -0.3073566178, -0.3056953050,-0.3040330609, + -0.3023698908, -0.3007057995, -0.2990407923, -0.2973748741,-0.2957080500, + -0.2940403252, -0.2923717047, -0.2907021936, -0.2890317969,-0.2873605198, + -0.2856883674, -0.2840153447, -0.2823414568, -0.2806667089,-0.2789911060, + -0.2773146533, -0.2756373558, -0.2739592187, -0.2722802470,-0.2706004460, + -0.2689198206, -0.2672383761, -0.2655561175, -0.2638730500,-0.2621891786, + -0.2605045086, -0.2588190451, -0.2571327932, -0.2554457579,-0.2537579446, + -0.2520693582, -0.2503800041, -0.2486898872, -0.2469990127,-0.2453073859, + -0.2436150118, -0.2419218956, -0.2402280425, -0.2385334576,-0.2368381461, + -0.2351421131, -0.2334453639, -0.2317479035, -0.2300497372,-0.2283508701, + -0.2266513074, -0.2249510543, -0.2232501160, -0.2215484976,-0.2198462044, + -0.2181432414, -0.2164396139, -0.2147353272, -0.2130303863,-0.2113247965, + -0.2096185629, -0.2079116908, -0.2062041854, -0.2044960518,-0.2027872954, + -0.2010779211, -0.1993679344, -0.1976573404, -0.1959461442,-0.1942343512, + -0.1925219665, -0.1908089954, -0.1890954430, -0.1873813146,-0.1856666154, + -0.1839513506, -0.1822355255, -0.1805191453, -0.1788022151,-0.1770847403, + -0.1753667261, -0.1736481777, -0.1719291003, -0.1702094992,-0.1684893796, + -0.1667687467, -0.1650476059, -0.1633259622, -0.1616038211,-0.1598811877, + -0.1581580673, -0.1564344650, -0.1547103863, -0.1529858363,-0.1512608202, + -0.1495353434, -0.1478094111, -0.1460830286, -0.1443562010,-0.1426289337, + -0.1409012319, -0.1391731010, -0.1374445460, -0.1357155724,-0.1339861854, + -0.1322563903, -0.1305261922, -0.1287955966, -0.1270646086,-0.1253332336, + -0.1236014767, -0.1218693434, -0.1201368388, -0.1184039683,-0.1166707371, + -0.1149371505, -0.1132032138, -0.1114689322, -0.1097343111,-0.1079993557, + -0.1062640713, -0.1045284633, -0.1027925368, -0.1010562972,-0.0993197497, + -0.0975828998, -0.0958457525, -0.0941083133, -0.0923705874,-0.0906325802, + -0.0888942969, -0.0871557427, -0.0854169231, -0.0836778433,-0.0819385086, + -0.0801989243, -0.0784590957, -0.0767190281, -0.0749787268,-0.0732381971, + -0.0714974443, -0.0697564737, -0.0680152907, -0.0662739004,-0.0645323083, + -0.0627905195, -0.0610485395, -0.0593063736, -0.0575640270,-0.0558215050, + -0.0540788130, -0.0523359562, -0.0505929401, -0.0488497698,-0.0471064507, + -0.0453629881, -0.0436193874, -0.0418756537, -0.0401317925,-0.0383878091, + -0.0366437087, -0.0348994967, -0.0331551784, -0.0314107591,-0.0296662441, + -0.0279216387, -0.0261769483, -0.0244321782, -0.0226873336,-0.0209424199, + -0.0191974424, -0.0174524064, -0.0157073173, -0.0139621803,-0.0122170008, + -0.0104717841, -0.0087265355, -0.0069812603, -0.0052359638,-0.0034906514, -0.0017453284 }; double fcosinus[3600] = { - 1.0000000000, 0.9999984769, 0.9999939077, 0.9999862922, - 0.9999756307, 0.9999619231, 0.9999451694, 0.9999253697, 0.9999025240, - 0.9998766325, 0.9998476952, 0.9998157121, 0.9997806835, 0.9997426093, - 0.9997014898, 0.9996573250, 0.9996101150, 0.9995598601, 0.9995065604, - 0.9994502159, 0.9993908270, 0.9993283938, 0.9992629164, 0.9991943951, - 0.9991228301, 0.9990482216, 0.9989705698, 0.9988898750, 0.9988061373, - 0.9987193572, 0.9986295348, 0.9985366703, 0.9984407642, 0.9983418166, - 0.9982398279, 0.9981347984, 0.9980267284, 0.9979156183, 0.9978014683, - 0.9976842788, 0.9975640503, 0.9974407829, 0.9973144772, 0.9971851335, - 0.9970527522, 0.9969173337, 0.9967788785, 0.9966373868, 0.9964928592, - 0.9963452962, 0.9961946981, 0.9960410654, 0.9958843986, 0.9957246982, - 0.9955619646, 0.9953961984, 0.9952274000, 0.9950555700, 0.9948807088, - 0.9947028171, 0.9945218954, 0.9943379441, 0.9941509640, 0.9939609555, - 0.9937679192, 0.9935718557, 0.9933727656, 0.9931706495, 0.9929655081, - 0.9927573419, 0.9925461516, 0.9923319379, 0.9921147013, 0.9918944426, - 0.9916711624, 0.9914448614, 0.9912155403, 0.9909831997, 0.9907478405, - 0.9905094632, 0.9902680687, 0.9900236577, 0.9897762309, 0.9895257891, - 0.9892723330, 0.9890158634, 0.9887563810, 0.9884938868, 0.9882283814, - 0.9879598658, 0.9876883406, 0.9874138068, 0.9871362651, 0.9868557164, - 0.9865721616, 0.9862856015, 0.9859960371, 0.9857034691, 0.9854078985, - 0.9851093262, 0.9848077530, 0.9845031800, 0.9841956080, 0.9838850379, - 0.9835714708, 0.9832549076, 0.9829353491, 0.9826127965, 0.9822872507, - 0.9819587127, 0.9816271834, 0.9812926640, 0.9809551553, 0.9806146585, - 0.9802711746, 0.9799247046, 0.9795752496, 0.9792228106, 0.9788673888, - 0.9785089851, 0.9781476007, 0.9777832368, 0.9774158943, 0.9770455744, - 0.9766722783, 0.9762960071, 0.9759167619, 0.9755345439, 0.9751493543, - 0.9747611942, 0.9743700648, 0.9739759673, 0.9735789029, 0.9731788728, - 0.9727758782, 0.9723699204, 0.9719610006, 0.9715491200, 0.9711342799, - 0.9707164816, 0.9702957263, 0.9698720153, 0.9694453499, 0.9690157314, - 0.9685831611, 0.9681476404, 0.9677091705, 0.9672677528, 0.9668233886, - 0.9663760793, 0.9659258263, 0.9654726309, 0.9650164945, 0.9645574185, - 0.9640954042, 0.9636304532, 0.9631625668, 0.9626917464, 0.9622179935, - 0.9617413095, 0.9612616959, 0.9607791542, 0.9602936857, 0.9598052920, - 0.9593139745, 0.9588197349, 0.9583225745, 0.9578224948, 0.9573194975, - 0.9568135841, 0.9563047560, 0.9557930148, 0.9552783621, 0.9547607995, - 0.9542403285, 0.9537169507, 0.9531906678, 0.9526614813, 0.9521293927, - 0.9515944039, 0.9510565163, 0.9505157316, 0.9499720515, 0.9494254776, - 0.9488760116, 0.9483236552, 0.9477684100, 0.9472102777, 0.9466492601, - 0.9460853588, 0.9455185756, 0.9449489122, 0.9443763702, 0.9438009516, - 0.9432226579, 0.9426414911, 0.9420574528, 0.9414705448, 0.9408807690, - 0.9402881270, 0.9396926208, 0.9390942521, 0.9384930228, 0.9378889346, - 0.9372819895, 0.9366721892, 0.9360595357, 0.9354440308, 0.9348256764, - 0.9342044743, 0.9335804265, 0.9329535348, 0.9323238012, 0.9316912276, - 0.9310558159, 0.9304175680, 0.9297764859, 0.9291325715, 0.9284858269, - 0.9278362539, 0.9271838546, 0.9265286309, 0.9258705848, 0.9252097184, - 0.9245460336, 0.9238795325, 0.9232102171, 0.9225380895, 0.9218631516, - 0.9211854056, 0.9205048535, 0.9198214973, 0.9191353393, 0.9184463813, - 0.9177546257, 0.9170600744, 0.9163627296, 0.9156625933, 0.9149596678, - 0.9142539552, 0.9135454576, 0.9128341772, 0.9121201162, 0.9114032766, - 0.9106836608, 0.9099612709, 0.9092361090, 0.9085081775, 0.9077774785, - 0.9070440143, 0.9063077870, 0.9055687990, 0.9048270525, 0.9040825497, - 0.9033352929, 0.9025852843, 0.9018325264, 0.9010770213, 0.9003187714, - 0.8995577790, 0.8987940463, 0.8980275758, 0.8972583697, 0.8964864304, - 0.8957117602, 0.8949343616, 0.8941542368, 0.8933713883, 0.8925858185, - 0.8917975296, 0.8910065242, 0.8902128046, 0.8894163733, 0.8886172327, - 0.8878153851, 0.8870108332, 0.8862035792, 0.8853936258, 0.8845809752, - 0.8837656301, 0.8829475929, 0.8821268660, 0.8813034521, 0.8804773535, - 0.8796485729, 0.8788171127, 0.8779829754, 0.8771461637, 0.8763066800, - 0.8754645270, 0.8746197071, 0.8737722230, 0.8729220773, 0.8720692724, - 0.8712138111, 0.8703556959, 0.8694949295, 0.8686315144, 0.8677654534, - 0.8668967489, 0.8660254038, 0.8651514206, 0.8642748020, 0.8633955506, - 0.8625136692, 0.8616291604, 0.8607420270, 0.8598522716, 0.8589598969, - 0.8580649057, 0.8571673007, 0.8562670846, 0.8553642602, 0.8544588301, - 0.8535507973, 0.8526401644, 0.8517269341, 0.8508111094, 0.8498926930, - 0.8489716876, 0.8480480962, 0.8471219214, 0.8461931661, 0.8452618332, - 0.8443279255, 0.8433914458, 0.8424523970, 0.8415107819, 0.8405666035, - 0.8396198645, 0.8386705679, 0.8377187166, 0.8367643135, 0.8358073614, - 0.8348478633, 0.8338858221, 0.8329212407, 0.8319541221, 0.8309844693, - 0.8300122851, 0.8290375726, 0.8280603346, 0.8270805743, 0.8260982945, - 0.8251134983, 0.8241261886, 0.8231363685, 0.8221440410, 0.8211492091, - 0.8201518759, 0.8191520443, 0.8181497174, 0.8171448983, 0.8161375901, - 0.8151277957, 0.8141155184, 0.8131007610, 0.8120835269, 0.8110638190, - 0.8100416404, 0.8090169944, 0.8079898839, 0.8069603121, 0.8059282822, - 0.8048937974, 0.8038568606, 0.8028174752, 0.8017756442, 0.8007313709, - 0.7996846585, 0.7986355100, 0.7975839288, 0.7965299180, 0.7954734809, - 0.7944146205, 0.7933533403, 0.7922896434, 0.7912235330, 0.7901550124, - 0.7890840848, 0.7880107536, 0.7869350220, 0.7858568932, 0.7847763705, - 0.7836934573, 0.7826081569, 0.7815204724, 0.7804304073, 0.7793379649, - 0.7782431485, 0.7771459615, 0.7760464071, 0.7749444887, 0.7738402097, - 0.7727335735, 0.7716245834, 0.7705132428, 0.7693995550, 0.7682835236, - 0.7671651518, 0.7660444431, 0.7649214009, 0.7637960286, 0.7626683297, - 0.7615383075, 0.7604059656, 0.7592713073, 0.7581343362, 0.7569950557, - 0.7558534692, 0.7547095802, 0.7535633923, 0.7524149089, 0.7512641335, - 0.7501110696, 0.7489557208, 0.7477980905, 0.7466381823, 0.7454759997, - 0.7443115462, 0.7431448255, 0.7419758410, 0.7408045963, 0.7396310950, - 0.7384553406, 0.7372773368, 0.7360970871, 0.7349145951, 0.7337298645, - 0.7325428988, 0.7313537016, 0.7301622766, 0.7289686274, 0.7277727577, - 0.7265746710, 0.7253743710, 0.7241718614, 0.7229671459, 0.7217602281, - 0.7205511117, 0.7193398003, 0.7181262978, 0.7169106077, 0.7156927337, - 0.7144726796, 0.7132504492, 0.7120260460, 0.7107994739, 0.7095707365, - 0.7083398377, 0.7071067812, 0.7058715707, 0.7046342100, 0.7033947028, - 0.7021530530, 0.7009092643, 0.6996633405, 0.6984152854, 0.6971651029, - 0.6959127966, 0.6946583705, 0.6934018283, 0.6921431739, 0.6908824111, - 0.6896195437, 0.6883545757, 0.6870875108, 0.6858183529, 0.6845471059, - 0.6832737737, 0.6819983601, 0.6807208690, 0.6794413043, 0.6781596699, - 0.6768759697, 0.6755902076, 0.6743023876, 0.6730125135, 0.6717205893, - 0.6704266190, 0.6691306064, 0.6678325555, 0.6665324702, 0.6652303547, - 0.6639262127, 0.6626200482, 0.6613118653, 0.6600016680, 0.6586894601, - 0.6573752458, 0.6560590290, 0.6547408137, 0.6534206040, 0.6520984038, - 0.6507742173, 0.6494480483, 0.6481199011, 0.6467897795, 0.6454576877, - 0.6441236298, 0.6427876097, 0.6414496316, 0.6401096995, 0.6387678175, - 0.6374239897, 0.6360782203, 0.6347305132, 0.6333808726, 0.6320293027, - 0.6306758074, 0.6293203910, 0.6279630576, 0.6266038114, 0.6252426563, - 0.6238795967, 0.6225146366, 0.6211477803, 0.6197790318, 0.6184083954, - 0.6170358751, 0.6156614753, 0.6142852001, 0.6129070537, 0.6115270402, - 0.6101451639, 0.6087614290, 0.6073758397, 0.6059884003, 0.6045991149, - 0.6032079877, 0.6018150232, 0.6004202253, 0.5990235985, 0.5976251470, - 0.5962248750, 0.5948227868, 0.5934188866, 0.5920131788, 0.5906056676, - 0.5891963574, 0.5877852523, 0.5863723567, 0.5849576750, 0.5835412114, - 0.5821229702, 0.5807029557, 0.5792811723, 0.5778576244, 0.5764323162, - 0.5750052520, 0.5735764364, 0.5721458734, 0.5707135677, 0.5692795234, - 0.5678437451, 0.5664062369, 0.5649670034, 0.5635260489, 0.5620833779, - 0.5606389946, 0.5591929035, 0.5577451090, 0.5562956155, 0.5548444274, - 0.5533915492, 0.5519369853, 0.5504807401, 0.5490228180, 0.5475632235, - 0.5461019610, 0.5446390350, 0.5431744500, 0.5417082103, 0.5402403205, - 0.5387707850, 0.5372996083, 0.5358267950, 0.5343523494, 0.5328762761, - 0.5313985795, 0.5299192642, 0.5284383347, 0.5269557955, 0.5254716511, - 0.5239859060, 0.5224985647, 0.5210096318, 0.5195191119, 0.5180270094, - 0.5165333289, 0.5150380749, 0.5135412521, 0.5120428649, 0.5105429179, - 0.5090414158, 0.5075383630, 0.5060337641, 0.5045276238, 0.5030199466, - 0.5015107372, 0.5000000000, 0.4984877398, 0.4969739610, 0.4954586684, - 0.4939418666, 0.4924235601, 0.4909037536, 0.4893824517, 0.4878596591, - 0.4863353804, 0.4848096202, 0.4832823833, 0.4817536741, 0.4802234974, - 0.4786918579, 0.4771587603, 0.4756242091, 0.4740882090, 0.4725507649, - 0.4710118812, 0.4694715628, 0.4679298143, 0.4663866403, 0.4648420457, - 0.4632960351, 0.4617486132, 0.4601997848, 0.4586495545, 0.4570979271, - 0.4555449072, 0.4539904997, 0.4524347093, 0.4508775407, 0.4493189986, - 0.4477590878, 0.4461978131, 0.4446351792, 0.4430711908, 0.4415058528, - 0.4399391699, 0.4383711468, 0.4368017884, 0.4352310994, 0.4336590846, - 0.4320857488, 0.4305110968, 0.4289351334, 0.4273578634, 0.4257792916, - 0.4241994227, 0.4226182617, 0.4210358134, 0.4194520824, 0.4178670738, - 0.4162807923, 0.4146932427, 0.4131044298, 0.4115143586, 0.4099230338, - 0.4083304604, 0.4067366431, 0.4051415868, 0.4035452964, 0.4019477767, - 0.4003490326, 0.3987490689, 0.3971478906, 0.3955455026, 0.3939419096, - 0.3923371166, 0.3907311285, 0.3891239501, 0.3875155865, 0.3859060423, - 0.3842953227, 0.3826834324, 0.3810703764, 0.3794561595, 0.3778407868, - 0.3762242631, 0.3746065934, 0.3729877826, 0.3713678356, 0.3697467573, - 0.3681245527, 0.3665012267, 0.3648767843, 0.3632512305, 0.3616245701, - 0.3599968081, 0.3583679495, 0.3567379993, 0.3551069624, 0.3534748438, - 0.3518416484, 0.3502073813, 0.3485720473, 0.3469356516, 0.3452981990, - 0.3436596946, 0.3420201433, 0.3403795502, 0.3387379202, 0.3370952584, - 0.3354515698, 0.3338068592, 0.3321611319, 0.3305143927, 0.3288666467, - 0.3272178990, 0.3255681545, 0.3239174182, 0.3222656952, 0.3206129906, - 0.3189593093, 0.3173046564, 0.3156490369, 0.3139924560, 0.3123349185, - 0.3106764296, 0.3090169944, 0.3073566178, 0.3056953050, 0.3040330609, - 0.3023698908, 0.3007057995, 0.2990407923, 0.2973748741, 0.2957080500, - 0.2940403252, 0.2923717047, 0.2907021936, 0.2890317969, 0.2873605198, - 0.2856883674, 0.2840153447, 0.2823414568, 0.2806667089, 0.2789911060, - 0.2773146533, 0.2756373558, 0.2739592187, 0.2722802470, 0.2706004460, - 0.2689198206, 0.2672383761, 0.2655561175, 0.2638730500, 0.2621891786, - 0.2605045086, 0.2588190451, 0.2571327932, 0.2554457579, 0.2537579446, - 0.2520693582, 0.2503800041, 0.2486898872, 0.2469990127, 0.2453073859, - 0.2436150118, 0.2419218956, 0.2402280425, 0.2385334576, 0.2368381461, - 0.2351421131, 0.2334453639, 0.2317479035, 0.2300497372, 0.2283508701, - 0.2266513074, 0.2249510543, 0.2232501160, 0.2215484976, 0.2198462044, - 0.2181432414, 0.2164396139, 0.2147353272, 0.2130303863, 0.2113247965, - 0.2096185629, 0.2079116908, 0.2062041854, 0.2044960518, 0.2027872954, - 0.2010779211, 0.1993679344, 0.1976573404, 0.1959461442, 0.1942343512, - 0.1925219665, 0.1908089954, 0.1890954430, 0.1873813146, 0.1856666154, - 0.1839513506, 0.1822355255, 0.1805191453, 0.1788022151, 0.1770847403, - 0.1753667261, 0.1736481777, 0.1719291003, 0.1702094992, 0.1684893796, - 0.1667687467, 0.1650476059, 0.1633259622, 0.1616038211, 0.1598811877, - 0.1581580673, 0.1564344650, 0.1547103863, 0.1529858363, 0.1512608202, - 0.1495353434, 0.1478094111, 0.1460830286, 0.1443562010, 0.1426289337, - 0.1409012319, 0.1391731010, 0.1374445460, 0.1357155724, 0.1339861854, - 0.1322563903, 0.1305261922, 0.1287955966, 0.1270646086, 0.1253332336, - 0.1236014767, 0.1218693434, 0.1201368388, 0.1184039683, 0.1166707371, - 0.1149371505, 0.1132032138, 0.1114689322, 0.1097343111, 0.1079993557, - 0.1062640713, 0.1045284633, 0.1027925368, 0.1010562972, 0.0993197497, - 0.0975828998, 0.0958457525, 0.0941083133, 0.0923705874, 0.0906325802, - 0.0888942969, 0.0871557427, 0.0854169231, 0.0836778433, 0.0819385086, - 0.0801989243, 0.0784590957, 0.0767190281, 0.0749787268, 0.0732381971, - 0.0714974443, 0.0697564737, 0.0680152907, 0.0662739004, 0.0645323083, - 0.0627905195, 0.0610485395, 0.0593063736, 0.0575640270, 0.0558215050, - 0.0540788130, 0.0523359562, 0.0505929401, 0.0488497698, 0.0471064507, - 0.0453629881, 0.0436193874, 0.0418756537, 0.0401317925, 0.0383878091, - 0.0366437087, 0.0348994967, 0.0331551784, 0.0314107591, 0.0296662441, - 0.0279216387, 0.0261769483, 0.0244321782, 0.0226873336, 0.0209424199, - 0.0191974424, 0.0174524064, 0.0157073173, 0.0139621803, 0.0122170008, - 0.0104717841, 0.0087265355, 0.0069812603, 0.0052359638, 0.0034906514, - 0.0017453284, 0.0000000000, -0.0017453284, -0.0034906514,-0.0052359638, - -0.0069812603, -0.0087265355, -0.0104717841, -0.0122170008,-0.0139621803, - -0.0157073173, -0.0174524064, -0.0191974424, -0.0209424199,-0.0226873336, - -0.0244321782, -0.0261769483, -0.0279216387, -0.0296662441,-0.0314107591, - -0.0331551784, -0.0348994967, -0.0366437087, -0.0383878091,-0.0401317925, - -0.0418756537, -0.0436193874, -0.0453629881, -0.0471064507,-0.0488497698, - -0.0505929401, -0.0523359562, -0.0540788130, -0.0558215050,-0.0575640270, - -0.0593063736, -0.0610485395, -0.0627905195, -0.0645323083,-0.0662739004, - -0.0680152907, -0.0697564737, -0.0714974443, -0.0732381971,-0.0749787268, - -0.0767190281, -0.0784590957, -0.0801989243, -0.0819385086,-0.0836778433, - -0.0854169231, -0.0871557427, -0.0888942969, -0.0906325802,-0.0923705874, - -0.0941083133, -0.0958457525, -0.0975828998, -0.0993197497,-0.1010562972, - -0.1027925368, -0.1045284633, -0.1062640713, -0.1079993557,-0.1097343111, - -0.1114689322, -0.1132032138, -0.1149371505, -0.1166707371,-0.1184039683, - -0.1201368388, -0.1218693434, -0.1236014767, -0.1253332336,-0.1270646086, - -0.1287955966, -0.1305261922, -0.1322563903, -0.1339861854,-0.1357155724, - -0.1374445460, -0.1391731010, -0.1409012319, -0.1426289337,-0.1443562010, - -0.1460830286, -0.1478094111, -0.1495353434, -0.1512608202,-0.1529858363, - -0.1547103863, -0.1564344650, -0.1581580673, -0.1598811877,-0.1616038211, - -0.1633259622, -0.1650476059, -0.1667687467, -0.1684893796,-0.1702094992, - -0.1719291003, -0.1736481777, -0.1753667261, -0.1770847403,-0.1788022151, - -0.1805191453, -0.1822355255, -0.1839513506, -0.1856666154,-0.1873813146, - -0.1890954430, -0.1908089954, -0.1925219665, -0.1942343512,-0.1959461442, - -0.1976573404, -0.1993679344, -0.2010779211, -0.2027872954,-0.2044960518, - -0.2062041854, -0.2079116908, -0.2096185629, -0.2113247965,-0.2130303863, - -0.2147353272, -0.2164396139, -0.2181432414, -0.2198462044,-0.2215484976, - -0.2232501160, -0.2249510543, -0.2266513074, -0.2283508701,-0.2300497372, - -0.2317479035, -0.2334453639, -0.2351421131, -0.2368381461,-0.2385334576, - -0.2402280425, -0.2419218956, -0.2436150118, -0.2453073859,-0.2469990127, - -0.2486898872, -0.2503800041, -0.2520693582, -0.2537579446,-0.2554457579, - -0.2571327932, -0.2588190451, -0.2605045086, -0.2621891786,-0.2638730500, - -0.2655561175, -0.2672383761, -0.2689198206, -0.2706004460,-0.2722802470, - -0.2739592187, -0.2756373558, -0.2773146533, -0.2789911060,-0.2806667089, - -0.2823414568, -0.2840153447, -0.2856883674, -0.2873605198,-0.2890317969, - -0.2907021936, -0.2923717047, -0.2940403252, -0.2957080500,-0.2973748741, - -0.2990407923, -0.3007057995, -0.3023698908, -0.3040330609,-0.3056953050, - -0.3073566178, -0.3090169944, -0.3106764296, -0.3123349185,-0.3139924560, - -0.3156490369, -0.3173046564, -0.3189593093, -0.3206129906,-0.3222656952, - -0.3239174182, -0.3255681545, -0.3272178990, -0.3288666467,-0.3305143927, - -0.3321611319, -0.3338068592, -0.3354515698, -0.3370952584,-0.3387379202, - -0.3403795502, -0.3420201433, -0.3436596946, -0.3452981990,-0.3469356516, - -0.3485720473, -0.3502073813, -0.3518416484, -0.3534748438,-0.3551069624, - -0.3567379993, -0.3583679495, -0.3599968081, -0.3616245701,-0.3632512305, - -0.3648767843, -0.3665012267, -0.3681245527, -0.3697467573,-0.3713678356, - -0.3729877826, -0.3746065934, -0.3762242631, -0.3778407868,-0.3794561595, - -0.3810703764, -0.3826834324, -0.3842953227, -0.3859060423,-0.3875155865, - -0.3891239501, -0.3907311285, -0.3923371166, -0.3939419096,-0.3955455026, - -0.3971478906, -0.3987490689, -0.4003490326, -0.4019477767,-0.4035452964, - -0.4051415868, -0.4067366431, -0.4083304604, -0.4099230338,-0.4115143586, - -0.4131044298, -0.4146932427, -0.4162807923, -0.4178670738,-0.4194520824, - -0.4210358134, -0.4226182617, -0.4241994227, -0.4257792916,-0.4273578634, - -0.4289351334, -0.4305110968, -0.4320857488, -0.4336590846,-0.4352310994, - -0.4368017884, -0.4383711468, -0.4399391699, -0.4415058528,-0.4430711908, - -0.4446351792, -0.4461978131, -0.4477590878, -0.4493189986,-0.4508775407, - -0.4524347093, -0.4539904997, -0.4555449072, -0.4570979271,-0.4586495545, - -0.4601997848, -0.4617486132, -0.4632960351, -0.4648420457,-0.4663866403, - -0.4679298143, -0.4694715628, -0.4710118812, -0.4725507649,-0.4740882090, - -0.4756242091, -0.4771587603, -0.4786918579, -0.4802234974,-0.4817536741, - -0.4832823833, -0.4848096202, -0.4863353804, -0.4878596591,-0.4893824517, - -0.4909037536, -0.4924235601, -0.4939418666, -0.4954586684,-0.4969739610, - -0.4984877398, -0.5000000000, -0.5015107372, -0.5030199466,-0.5045276238, - -0.5060337641, -0.5075383630, -0.5090414158, -0.5105429179,-0.5120428649, - -0.5135412521, -0.5150380749, -0.5165333289, -0.5180270094,-0.5195191119, - -0.5210096318, -0.5224985647, -0.5239859060, -0.5254716511,-0.5269557955, - -0.5284383347, -0.5299192642, -0.5313985795, -0.5328762761,-0.5343523494, - -0.5358267950, -0.5372996083, -0.5387707850, -0.5402403205,-0.5417082103, - -0.5431744500, -0.5446390350, -0.5461019610, -0.5475632235,-0.5490228180, - -0.5504807401, -0.5519369853, -0.5533915492, -0.5548444274,-0.5562956155, - -0.5577451090, -0.5591929035, -0.5606389946, -0.5620833779,-0.5635260489, - -0.5649670034, -0.5664062369, -0.5678437451, -0.5692795234,-0.5707135677, - -0.5721458734, -0.5735764364, -0.5750052520, -0.5764323162,-0.5778576244, - -0.5792811723, -0.5807029557, -0.5821229702, -0.5835412114,-0.5849576750, - -0.5863723567, -0.5877852523, -0.5891963574, -0.5906056676,-0.5920131788, - -0.5934188866, -0.5948227868, -0.5962248750, -0.5976251470,-0.5990235985, - -0.6004202253, -0.6018150232, -0.6032079877, -0.6045991149,-0.6059884003, - -0.6073758397, -0.6087614290, -0.6101451639, -0.6115270402,-0.6129070537, - -0.6142852001, -0.6156614753, -0.6170358751, -0.6184083954,-0.6197790318, - -0.6211477803, -0.6225146366, -0.6238795967, -0.6252426563,-0.6266038114, - -0.6279630576, -0.6293203910, -0.6306758074, -0.6320293027,-0.6333808726, - -0.6347305132, -0.6360782203, -0.6374239897, -0.6387678175,-0.6401096995, - -0.6414496316, -0.6427876097, -0.6441236298, -0.6454576877,-0.6467897795, - -0.6481199011, -0.6494480483, -0.6507742173, -0.6520984038,-0.6534206040, - -0.6547408137, -0.6560590290, -0.6573752458, -0.6586894601,-0.6600016680, - -0.6613118653, -0.6626200482, -0.6639262127, -0.6652303547,-0.6665324702, - -0.6678325555, -0.6691306064, -0.6704266190, -0.6717205893,-0.6730125135, - -0.6743023876, -0.6755902076, -0.6768759697, -0.6781596699,-0.6794413043, - -0.6807208690, -0.6819983601, -0.6832737737, -0.6845471059,-0.6858183529, - -0.6870875108, -0.6883545757, -0.6896195437, -0.6908824111,-0.6921431739, - -0.6934018283, -0.6946583705, -0.6959127966, -0.6971651029,-0.6984152854, - -0.6996633405, -0.7009092643, -0.7021530530, -0.7033947028,-0.7046342100, - -0.7058715707, -0.7071067812, -0.7083398377, -0.7095707365,-0.7107994739, - -0.7120260460, -0.7132504492, -0.7144726796, -0.7156927337,-0.7169106077, - -0.7181262978, -0.7193398003, -0.7205511117, -0.7217602281,-0.7229671459, - -0.7241718614, -0.7253743710, -0.7265746710, -0.7277727577,-0.7289686274, - -0.7301622766, -0.7313537016, -0.7325428988, -0.7337298645,-0.7349145951, - -0.7360970871, -0.7372773368, -0.7384553406, -0.7396310950,-0.7408045963, - -0.7419758410, -0.7431448255, -0.7443115462, -0.7454759997,-0.7466381823, - -0.7477980905, -0.7489557208, -0.7501110696, -0.7512641335,-0.7524149089, - -0.7535633923, -0.7547095802, -0.7558534692, -0.7569950557,-0.7581343362, - -0.7592713073, -0.7604059656, -0.7615383075, -0.7626683297,-0.7637960286, - -0.7649214009, -0.7660444431, -0.7671651518, -0.7682835236,-0.7693995550, - -0.7705132428, -0.7716245834, -0.7727335735, -0.7738402097,-0.7749444887, - -0.7760464071, -0.7771459615, -0.7782431485, -0.7793379649,-0.7804304073, - -0.7815204724, -0.7826081569, -0.7836934573, -0.7847763705,-0.7858568932, - -0.7869350220, -0.7880107536, -0.7890840848, -0.7901550124,-0.7912235330, - -0.7922896434, -0.7933533403, -0.7944146205, -0.7954734809,-0.7965299180, - -0.7975839288, -0.7986355100, -0.7996846585, -0.8007313709,-0.8017756442, - -0.8028174752, -0.8038568606, -0.8048937974, -0.8059282822,-0.8069603121, - -0.8079898839, -0.8090169944, -0.8100416404, -0.8110638190,-0.8120835269, - -0.8131007610, -0.8141155184, -0.8151277957, -0.8161375901,-0.8171448983, - -0.8181497174, -0.8191520443, -0.8201518759, -0.8211492091,-0.8221440410, - -0.8231363685, -0.8241261886, -0.8251134983, -0.8260982945,-0.8270805743, - -0.8280603346, -0.8290375726, -0.8300122851, -0.8309844693,-0.8319541221, - -0.8329212407, -0.8338858221, -0.8348478633, -0.8358073614,-0.8367643135, - -0.8377187166, -0.8386705679, -0.8396198645, -0.8405666035,-0.8415107819, - -0.8424523970, -0.8433914458, -0.8443279255, -0.8452618332,-0.8461931661, - -0.8471219214, -0.8480480962, -0.8489716876, -0.8498926930,-0.8508111094, - -0.8517269341, -0.8526401644, -0.8535507973, -0.8544588301,-0.8553642602, - -0.8562670846, -0.8571673007, -0.8580649057, -0.8589598969,-0.8598522716, - -0.8607420270, -0.8616291604, -0.8625136692, -0.8633955506,-0.8642748020, - -0.8651514206, -0.8660254038, -0.8668967489, -0.8677654534,-0.8686315144, - -0.8694949295, -0.8703556959, -0.8712138111, -0.8720692724,-0.8729220773, - -0.8737722230, -0.8746197071, -0.8754645270, -0.8763066800,-0.8771461637, - -0.8779829754, -0.8788171127, -0.8796485729, -0.8804773535,-0.8813034521, - -0.8821268660, -0.8829475929, -0.8837656301, -0.8845809752,-0.8853936258, - -0.8862035792, -0.8870108332, -0.8878153851, -0.8886172327,-0.8894163733, - -0.8902128046, -0.8910065242, -0.8917975296, -0.8925858185,-0.8933713883, - -0.8941542368, -0.8949343616, -0.8957117602, -0.8964864304,-0.8972583697, - -0.8980275758, -0.8987940463, -0.8995577790, -0.9003187714,-0.9010770213, - -0.9018325264, -0.9025852843, -0.9033352929, -0.9040825497,-0.9048270525, - -0.9055687990, -0.9063077870, -0.9070440143, -0.9077774785,-0.9085081775, - -0.9092361090, -0.9099612709, -0.9106836608, -0.9114032766,-0.9121201162, - -0.9128341772, -0.9135454576, -0.9142539552, -0.9149596678,-0.9156625933, - -0.9163627296, -0.9170600744, -0.9177546257, -0.9184463813,-0.9191353393, - -0.9198214973, -0.9205048535, -0.9211854056, -0.9218631516,-0.9225380895, - -0.9232102171, -0.9238795325, -0.9245460336, -0.9252097184,-0.9258705848, - -0.9265286309, -0.9271838546, -0.9278362539, -0.9284858269,-0.9291325715, - -0.9297764859, -0.9304175680, -0.9310558159, -0.9316912276,-0.9323238012, - -0.9329535348, -0.9335804265, -0.9342044743, -0.9348256764,-0.9354440308, - -0.9360595357, -0.9366721892, -0.9372819895, -0.9378889346,-0.9384930228, - -0.9390942521, -0.9396926208, -0.9402881270, -0.9408807690,-0.9414705448, - -0.9420574528, -0.9426414911, -0.9432226579, -0.9438009516,-0.9443763702, - -0.9449489122, -0.9455185756, -0.9460853588, -0.9466492601,-0.9472102777, - -0.9477684100, -0.9483236552, -0.9488760116, -0.9494254776,-0.9499720515, - -0.9505157316, -0.9510565163, -0.9515944039, -0.9521293927,-0.9526614813, - -0.9531906678, -0.9537169507, -0.9542403285, -0.9547607995,-0.9552783621, - -0.9557930148, -0.9563047560, -0.9568135841, -0.9573194975,-0.9578224948, - -0.9583225745, -0.9588197349, -0.9593139745, -0.9598052920,-0.9602936857, - -0.9607791542, -0.9612616959, -0.9617413095, -0.9622179935,-0.9626917464, - -0.9631625668, -0.9636304532, -0.9640954042, -0.9645574185,-0.9650164945, - -0.9654726309, -0.9659258263, -0.9663760793, -0.9668233886,-0.9672677528, - -0.9677091705, -0.9681476404, -0.9685831611, -0.9690157314,-0.9694453499, - -0.9698720153, -0.9702957263, -0.9707164816, -0.9711342799,-0.9715491200, - -0.9719610006, -0.9723699204, -0.9727758782, -0.9731788728,-0.9735789029, - -0.9739759673, -0.9743700648, -0.9747611942, -0.9751493543,-0.9755345439, - -0.9759167619, -0.9762960071, -0.9766722783, -0.9770455744,-0.9774158943, - -0.9777832368, -0.9781476007, -0.9785089851, -0.9788673888,-0.9792228106, - -0.9795752496, -0.9799247046, -0.9802711746, -0.9806146585,-0.9809551553, - -0.9812926640, -0.9816271834, -0.9819587127, -0.9822872507,-0.9826127965, - -0.9829353491, -0.9832549076, -0.9835714708, -0.9838850379,-0.9841956080, - -0.9845031800, -0.9848077530, -0.9851093262, -0.9854078985,-0.9857034691, - -0.9859960371, -0.9862856015, -0.9865721616, -0.9868557164,-0.9871362651, - -0.9874138068, -0.9876883406, -0.9879598658, -0.9882283814,-0.9884938868, - -0.9887563810, -0.9890158634, -0.9892723330, -0.9895257891,-0.9897762309, - -0.9900236577, -0.9902680687, -0.9905094632, -0.9907478405,-0.9909831997, - -0.9912155403, -0.9914448614, -0.9916711624, -0.9918944426,-0.9921147013, - -0.9923319379, -0.9925461516, -0.9927573419, -0.9929655081,-0.9931706495, - -0.9933727656, -0.9935718557, -0.9937679192, -0.9939609555,-0.9941509640, - -0.9943379441, -0.9945218954, -0.9947028171, -0.9948807088,-0.9950555700, - -0.9952274000, -0.9953961984, -0.9955619646, -0.9957246982,-0.9958843986, - -0.9960410654, -0.9961946981, -0.9963452962, -0.9964928592,-0.9966373868, - -0.9967788785, -0.9969173337, -0.9970527522, -0.9971851335,-0.9973144772, - -0.9974407829, -0.9975640503, -0.9976842788, -0.9978014683,-0.9979156183, - -0.9980267284, -0.9981347984, -0.9982398279, -0.9983418166,-0.9984407642, - -0.9985366703, -0.9986295348, -0.9987193572, -0.9988061373,-0.9988898750, - -0.9989705698, -0.9990482216, -0.9991228301, -0.9991943951,-0.9992629164, - -0.9993283938, -0.9993908270, -0.9994502159, -0.9995065604,-0.9995598601, - -0.9996101150, -0.9996573250, -0.9997014898, -0.9997426093,-0.9997806835, - -0.9998157121, -0.9998476952, -0.9998766325, -0.9999025240,-0.9999253697, - -0.9999451694, -0.9999619231, -0.9999756307, -0.9999862922,-0.9999939077, - -0.9999984769, -1.0000000000, -0.9999984769, -0.9999939077,-0.9999862922, - -0.9999756307, -0.9999619231, -0.9999451694, -0.9999253697,-0.9999025240, - -0.9998766325, -0.9998476952, -0.9998157121, -0.9997806835,-0.9997426093, - -0.9997014898, -0.9996573250, -0.9996101150, -0.9995598601,-0.9995065604, - -0.9994502159, -0.9993908270, -0.9993283938, -0.9992629164,-0.9991943951, - -0.9991228301, -0.9990482216, -0.9989705698, -0.9988898750,-0.9988061373, - -0.9987193572, -0.9986295348, -0.9985366703, -0.9984407642,-0.9983418166, - -0.9982398279, -0.9981347984, -0.9980267284, -0.9979156183,-0.9978014683, - -0.9976842788, -0.9975640503, -0.9974407829, -0.9973144772,-0.9971851335, - -0.9970527522, -0.9969173337, -0.9967788785, -0.9966373868,-0.9964928592, - -0.9963452962, -0.9961946981, -0.9960410654, -0.9958843986,-0.9957246982, - -0.9955619646, -0.9953961984, -0.9952274000, -0.9950555700,-0.9948807088, - -0.9947028171, -0.9945218954, -0.9943379441, -0.9941509640,-0.9939609555, - -0.9937679192, -0.9935718557, -0.9933727656, -0.9931706495,-0.9929655081, - -0.9927573419, -0.9925461516, -0.9923319379, -0.9921147013,-0.9918944426, - -0.9916711624, -0.9914448614, -0.9912155403, -0.9909831997,-0.9907478405, - -0.9905094632, -0.9902680687, -0.9900236577, -0.9897762309,-0.9895257891, - -0.9892723330, -0.9890158634, -0.9887563810, -0.9884938868,-0.9882283814, - -0.9879598658, -0.9876883406, -0.9874138068, -0.9871362651,-0.9868557164, - -0.9865721616, -0.9862856015, -0.9859960371, -0.9857034691,-0.9854078985, - -0.9851093262, -0.9848077530, -0.9845031800, -0.9841956080,-0.9838850379, - -0.9835714708, -0.9832549076, -0.9829353491, -0.9826127965,-0.9822872507, - -0.9819587127, -0.9816271834, -0.9812926640, -0.9809551553,-0.9806146585, - -0.9802711746, -0.9799247046, -0.9795752496, -0.9792228106,-0.9788673888, - -0.9785089851, -0.9781476007, -0.9777832368, -0.9774158943,-0.9770455744, - -0.9766722783, -0.9762960071, -0.9759167619, -0.9755345439,-0.9751493543, - -0.9747611942, -0.9743700648, -0.9739759673, -0.9735789029,-0.9731788728, - -0.9727758782, -0.9723699204, -0.9719610006, -0.9715491200,-0.9711342799, - -0.9707164816, -0.9702957263, -0.9698720153, -0.9694453499,-0.9690157314, - -0.9685831611, -0.9681476404, -0.9677091705, -0.9672677528,-0.9668233886, - -0.9663760793, -0.9659258263, -0.9654726309, -0.9650164945,-0.9645574185, - -0.9640954042, -0.9636304532, -0.9631625668, -0.9626917464,-0.9622179935, - -0.9617413095, -0.9612616959, -0.9607791542, -0.9602936857,-0.9598052920, - -0.9593139745, -0.9588197349, -0.9583225745, -0.9578224948,-0.9573194975, - -0.9568135841, -0.9563047560, -0.9557930148, -0.9552783621,-0.9547607995, - -0.9542403285, -0.9537169507, -0.9531906678, -0.9526614813,-0.9521293927, - -0.9515944039, -0.9510565163, -0.9505157316, -0.9499720515,-0.9494254776, - -0.9488760116, -0.9483236552, -0.9477684100, -0.9472102777,-0.9466492601, - -0.9460853588, -0.9455185756, -0.9449489122, -0.9443763702,-0.9438009516, - -0.9432226579, -0.9426414911, -0.9420574528, -0.9414705448,-0.9408807690, - -0.9402881270, -0.9396926208, -0.9390942521, -0.9384930228,-0.9378889346, - -0.9372819895, -0.9366721892, -0.9360595357, -0.9354440308,-0.9348256764, - -0.9342044743, -0.9335804265, -0.9329535348, -0.9323238012,-0.9316912276, - -0.9310558159, -0.9304175680, -0.9297764859, -0.9291325715,-0.9284858269, - -0.9278362539, -0.9271838546, -0.9265286309, -0.9258705848,-0.9252097184, - -0.9245460336, -0.9238795325, -0.9232102171, -0.9225380895,-0.9218631516, - -0.9211854056, -0.9205048535, -0.9198214973, -0.9191353393,-0.9184463813, - -0.9177546257, -0.9170600744, -0.9163627296, -0.9156625933,-0.9149596678, - -0.9142539552, -0.9135454576, -0.9128341772, -0.9121201162,-0.9114032766, - -0.9106836608, -0.9099612709, -0.9092361090, -0.9085081775,-0.9077774785, - -0.9070440143, -0.9063077870, -0.9055687990, -0.9048270525,-0.9040825497, - -0.9033352929, -0.9025852843, -0.9018325264, -0.9010770213,-0.9003187714, - -0.8995577790, -0.8987940463, -0.8980275758, -0.8972583697,-0.8964864304, - -0.8957117602, -0.8949343616, -0.8941542368, -0.8933713883,-0.8925858185, - -0.8917975296, -0.8910065242, -0.8902128046, -0.8894163733,-0.8886172327, - -0.8878153851, -0.8870108332, -0.8862035792, -0.8853936258,-0.8845809752, - -0.8837656301, -0.8829475929, -0.8821268660, -0.8813034521,-0.8804773535, - -0.8796485729, -0.8788171127, -0.8779829754, -0.8771461637,-0.8763066800, - -0.8754645270, -0.8746197071, -0.8737722230, -0.8729220773,-0.8720692724, - -0.8712138111, -0.8703556959, -0.8694949295, -0.8686315144,-0.8677654534, - -0.8668967489, -0.8660254038, -0.8651514206, -0.8642748020,-0.8633955506, - -0.8625136692, -0.8616291604, -0.8607420270, -0.8598522716,-0.8589598969, - -0.8580649057, -0.8571673007, -0.8562670846, -0.8553642602,-0.8544588301, - -0.8535507973, -0.8526401644, -0.8517269341, -0.8508111094,-0.8498926930, - -0.8489716876, -0.8480480962, -0.8471219214, -0.8461931661,-0.8452618332, - -0.8443279255, -0.8433914458, -0.8424523970, -0.8415107819,-0.8405666035, - -0.8396198645, -0.8386705679, -0.8377187166, -0.8367643135,-0.8358073614, - -0.8348478633, -0.8338858221, -0.8329212407, -0.8319541221,-0.8309844693, - -0.8300122851, -0.8290375726, -0.8280603346, -0.8270805743,-0.8260982945, - -0.8251134983, -0.8241261886, -0.8231363685, -0.8221440410,-0.8211492091, - -0.8201518759, -0.8191520443, -0.8181497174, -0.8171448983,-0.8161375901, - -0.8151277957, -0.8141155184, -0.8131007610, -0.8120835269,-0.8110638190, - -0.8100416404, -0.8090169944, -0.8079898839, -0.8069603121,-0.8059282822, - -0.8048937974, -0.8038568606, -0.8028174752, -0.8017756442,-0.8007313709, - -0.7996846585, -0.7986355100, -0.7975839288, -0.7965299180,-0.7954734809, - -0.7944146205, -0.7933533403, -0.7922896434, -0.7912235330,-0.7901550124, - -0.7890840848, -0.7880107536, -0.7869350220, -0.7858568932,-0.7847763705, - -0.7836934573, -0.7826081569, -0.7815204724, -0.7804304073,-0.7793379649, - -0.7782431485, -0.7771459615, -0.7760464071, -0.7749444887,-0.7738402097, - -0.7727335735, -0.7716245834, -0.7705132428, -0.7693995550,-0.7682835236, - -0.7671651518, -0.7660444431, -0.7649214009, -0.7637960286,-0.7626683297, - -0.7615383075, -0.7604059656, -0.7592713073, -0.7581343362,-0.7569950557, - -0.7558534692, -0.7547095802, -0.7535633923, -0.7524149089,-0.7512641335, - -0.7501110696, -0.7489557208, -0.7477980905, -0.7466381823,-0.7454759997, - -0.7443115462, -0.7431448255, -0.7419758410, -0.7408045963,-0.7396310950, - -0.7384553406, -0.7372773368, -0.7360970871, -0.7349145951,-0.7337298645, - -0.7325428988, -0.7313537016, -0.7301622766, -0.7289686274,-0.7277727577, - -0.7265746710, -0.7253743710, -0.7241718614, -0.7229671459,-0.7217602281, - -0.7205511117, -0.7193398003, -0.7181262978, -0.7169106077,-0.7156927337, - -0.7144726796, -0.7132504492, -0.7120260460, -0.7107994739,-0.7095707365, - -0.7083398377, -0.7071067812, -0.7058715707, -0.7046342100,-0.7033947028, - -0.7021530530, -0.7009092643, -0.6996633405, -0.6984152854,-0.6971651029, - -0.6959127966, -0.6946583705, -0.6934018283, -0.6921431739,-0.6908824111, - -0.6896195437, -0.6883545757, -0.6870875108, -0.6858183529,-0.6845471059, - -0.6832737737, -0.6819983601, -0.6807208690, -0.6794413043,-0.6781596699, - -0.6768759697, -0.6755902076, -0.6743023876, -0.6730125135,-0.6717205893, - -0.6704266190, -0.6691306064, -0.6678325555, -0.6665324702,-0.6652303547, - -0.6639262127, -0.6626200482, -0.6613118653, -0.6600016680,-0.6586894601, - -0.6573752458, -0.6560590290, -0.6547408137, -0.6534206040,-0.6520984038, - -0.6507742173, -0.6494480483, -0.6481199011, -0.6467897795,-0.6454576877, - -0.6441236298, -0.6427876097, -0.6414496316, -0.6401096995,-0.6387678175, - -0.6374239897, -0.6360782203, -0.6347305132, -0.6333808726,-0.6320293027, - -0.6306758074, -0.6293203910, -0.6279630576, -0.6266038114,-0.6252426563, - -0.6238795967, -0.6225146366, -0.6211477803, -0.6197790318,-0.6184083954, - -0.6170358751, -0.6156614753, -0.6142852001, -0.6129070537,-0.6115270402, - -0.6101451639, -0.6087614290, -0.6073758397, -0.6059884003,-0.6045991149, - -0.6032079877, -0.6018150232, -0.6004202253, -0.5990235985,-0.5976251470, - -0.5962248750, -0.5948227868, -0.5934188866, -0.5920131788,-0.5906056676, - -0.5891963574, -0.5877852523, -0.5863723567, -0.5849576750,-0.5835412114, - -0.5821229702, -0.5807029557, -0.5792811723, -0.5778576244,-0.5764323162, - -0.5750052520, -0.5735764364, -0.5721458734, -0.5707135677,-0.5692795234, - -0.5678437451, -0.5664062369, -0.5649670034, -0.5635260489,-0.5620833779, - -0.5606389946, -0.5591929035, -0.5577451090, -0.5562956155,-0.5548444274, - -0.5533915492, -0.5519369853, -0.5504807401, -0.5490228180,-0.5475632235, - -0.5461019610, -0.5446390350, -0.5431744500, -0.5417082103,-0.5402403205, - -0.5387707850, -0.5372996083, -0.5358267950, -0.5343523494,-0.5328762761, - -0.5313985795, -0.5299192642, -0.5284383347, -0.5269557955,-0.5254716511, - -0.5239859060, -0.5224985647, -0.5210096318, -0.5195191119,-0.5180270094, - -0.5165333289, -0.5150380749, -0.5135412521, -0.5120428649,-0.5105429179, - -0.5090414158, -0.5075383630, -0.5060337641, -0.5045276238,-0.5030199466, - -0.5015107372, -0.5000000000, -0.4984877398, -0.4969739610,-0.4954586684, - -0.4939418666, -0.4924235601, -0.4909037536, -0.4893824517,-0.4878596591, - -0.4863353804, -0.4848096202, -0.4832823833, -0.4817536741,-0.4802234974, - -0.4786918579, -0.4771587603, -0.4756242091, -0.4740882090,-0.4725507649, - -0.4710118812, -0.4694715628, -0.4679298143, -0.4663866403,-0.4648420457, - -0.4632960351, -0.4617486132, -0.4601997848, -0.4586495545,-0.4570979271, - -0.4555449072, -0.4539904997, -0.4524347093, -0.4508775407,-0.4493189986, - -0.4477590878, -0.4461978131, -0.4446351792, -0.4430711908,-0.4415058528, - -0.4399391699, -0.4383711468, -0.4368017884, -0.4352310994,-0.4336590846, - -0.4320857488, -0.4305110968, -0.4289351334, -0.4273578634,-0.4257792916, - -0.4241994227, -0.4226182617, -0.4210358134, -0.4194520824,-0.4178670738, - -0.4162807923, -0.4146932427, -0.4131044298, -0.4115143586,-0.4099230338, - -0.4083304604, -0.4067366431, -0.4051415868, -0.4035452964,-0.4019477767, - -0.4003490326, -0.3987490689, -0.3971478906, -0.3955455026,-0.3939419096, - -0.3923371166, -0.3907311285, -0.3891239501, -0.3875155865,-0.3859060423, - -0.3842953227, -0.3826834324, -0.3810703764, -0.3794561595,-0.3778407868, - -0.3762242631, -0.3746065934, -0.3729877826, -0.3713678356,-0.3697467573, - -0.3681245527, -0.3665012267, -0.3648767843, -0.3632512305,-0.3616245701, - -0.3599968081, -0.3583679495, -0.3567379993, -0.3551069624,-0.3534748438, - -0.3518416484, -0.3502073813, -0.3485720473, -0.3469356516,-0.3452981990, - -0.3436596946, -0.3420201433, -0.3403795502, -0.3387379202,-0.3370952584, - -0.3354515698, -0.3338068592, -0.3321611319, -0.3305143927,-0.3288666467, - -0.3272178990, -0.3255681545, -0.3239174182, -0.3222656952,-0.3206129906, - -0.3189593093, -0.3173046564, -0.3156490369, -0.3139924560,-0.3123349185, - -0.3106764296, -0.3090169944, -0.3073566178, -0.3056953050,-0.3040330609, - -0.3023698908, -0.3007057995, -0.2990407923, -0.2973748741,-0.2957080500, - -0.2940403252, -0.2923717047, -0.2907021936, -0.2890317969,-0.2873605198, - -0.2856883674, -0.2840153447, -0.2823414568, -0.2806667089,-0.2789911060, - -0.2773146533, -0.2756373558, -0.2739592187, -0.2722802470,-0.2706004460, - -0.2689198206, -0.2672383761, -0.2655561175, -0.2638730500,-0.2621891786, - -0.2605045086, -0.2588190451, -0.2571327932, -0.2554457579,-0.2537579446, - -0.2520693582, -0.2503800041, -0.2486898872, -0.2469990127,-0.2453073859, - -0.2436150118, -0.2419218956, -0.2402280425, -0.2385334576,-0.2368381461, - -0.2351421131, -0.2334453639, -0.2317479035, -0.2300497372,-0.2283508701, - -0.2266513074, -0.2249510543, -0.2232501160, -0.2215484976,-0.2198462044, - -0.2181432414, -0.2164396139, -0.2147353272, -0.2130303863,-0.2113247965, - -0.2096185629, -0.2079116908, -0.2062041854, -0.2044960518,-0.2027872954, - -0.2010779211, -0.1993679344, -0.1976573404, -0.1959461442,-0.1942343512, - -0.1925219665, -0.1908089954, -0.1890954430, -0.1873813146,-0.1856666154, - -0.1839513506, -0.1822355255, -0.1805191453, -0.1788022151,-0.1770847403, - -0.1753667261, -0.1736481777, -0.1719291003, -0.1702094992,-0.1684893796, - -0.1667687467, -0.1650476059, -0.1633259622, -0.1616038211,-0.1598811877, - -0.1581580673, -0.1564344650, -0.1547103863, -0.1529858363,-0.1512608202, - -0.1495353434, -0.1478094111, -0.1460830286, -0.1443562010,-0.1426289337, - -0.1409012319, -0.1391731010, -0.1374445460, -0.1357155724,-0.1339861854, - -0.1322563903, -0.1305261922, -0.1287955966, -0.1270646086,-0.1253332336, - -0.1236014767, -0.1218693434, -0.1201368388, -0.1184039683,-0.1166707371, - -0.1149371505, -0.1132032138, -0.1114689322, -0.1097343111,-0.1079993557, - -0.1062640713, -0.1045284633, -0.1027925368, -0.1010562972,-0.0993197497, - -0.0975828998, -0.0958457525, -0.0941083133, -0.0923705874,-0.0906325802, - -0.0888942969, -0.0871557427, -0.0854169231, -0.0836778433,-0.0819385086, - -0.0801989243, -0.0784590957, -0.0767190281, -0.0749787268,-0.0732381971, - -0.0714974443, -0.0697564737, -0.0680152907, -0.0662739004,-0.0645323083, - -0.0627905195, -0.0610485395, -0.0593063736, -0.0575640270,-0.0558215050, - -0.0540788130, -0.0523359562, -0.0505929401, -0.0488497698,-0.0471064507, - -0.0453629881, -0.0436193874, -0.0418756537, -0.0401317925,-0.0383878091, - -0.0366437087, -0.0348994967, -0.0331551784, -0.0314107591,-0.0296662441, - -0.0279216387, -0.0261769483, -0.0244321782, -0.0226873336,-0.0209424199, - -0.0191974424, -0.0174524064, -0.0157073173, -0.0139621803,-0.0122170008, - -0.0104717841, -0.0087265355, -0.0069812603, -0.0052359638,-0.0034906514, - -0.0017453284, -0.0000000000, 0.0017453284, 0.0034906514, 0.0052359638, - 0.0069812603, 0.0087265355, 0.0104717841, 0.0122170008, 0.0139621803, - 0.0157073173, 0.0174524064, 0.0191974424, 0.0209424199, 0.0226873336, - 0.0244321782, 0.0261769483, 0.0279216387, 0.0296662441, 0.0314107591, - 0.0331551784, 0.0348994967, 0.0366437087, 0.0383878091, 0.0401317925, - 0.0418756537, 0.0436193874, 0.0453629881, 0.0471064507, 0.0488497698, - 0.0505929401, 0.0523359562, 0.0540788130, 0.0558215050, 0.0575640270, - 0.0593063736, 0.0610485395, 0.0627905195, 0.0645323083, 0.0662739004, - 0.0680152907, 0.0697564737, 0.0714974443, 0.0732381971, 0.0749787268, - 0.0767190281, 0.0784590957, 0.0801989243, 0.0819385086, 0.0836778433, - 0.0854169231, 0.0871557427, 0.0888942969, 0.0906325802, 0.0923705874, - 0.0941083133, 0.0958457525, 0.0975828998, 0.0993197497, 0.1010562972, - 0.1027925368, 0.1045284633, 0.1062640713, 0.1079993557, 0.1097343111, - 0.1114689322, 0.1132032138, 0.1149371505, 0.1166707371, 0.1184039683, - 0.1201368388, 0.1218693434, 0.1236014767, 0.1253332336, 0.1270646086, - 0.1287955966, 0.1305261922, 0.1322563903, 0.1339861854, 0.1357155724, - 0.1374445460, 0.1391731010, 0.1409012319, 0.1426289337, 0.1443562010, - 0.1460830286, 0.1478094111, 0.1495353434, 0.1512608202, 0.1529858363, - 0.1547103863, 0.1564344650, 0.1581580673, 0.1598811877, 0.1616038211, - 0.1633259622, 0.1650476059, 0.1667687467, 0.1684893796, 0.1702094992, - 0.1719291003, 0.1736481777, 0.1753667261, 0.1770847403, 0.1788022151, - 0.1805191453, 0.1822355255, 0.1839513506, 0.1856666154, 0.1873813146, - 0.1890954430, 0.1908089954, 0.1925219665, 0.1942343512, 0.1959461442, - 0.1976573404, 0.1993679344, 0.2010779211, 0.2027872954, 0.2044960518, - 0.2062041854, 0.2079116908, 0.2096185629, 0.2113247965, 0.2130303863, - 0.2147353272, 0.2164396139, 0.2181432414, 0.2198462044, 0.2215484976, - 0.2232501160, 0.2249510543, 0.2266513074, 0.2283508701, 0.2300497372, - 0.2317479035, 0.2334453639, 0.2351421131, 0.2368381461, 0.2385334576, - 0.2402280425, 0.2419218956, 0.2436150118, 0.2453073859, 0.2469990127, - 0.2486898872, 0.2503800041, 0.2520693582, 0.2537579446, 0.2554457579, - 0.2571327932, 0.2588190451, 0.2605045086, 0.2621891786, 0.2638730500, - 0.2655561175, 0.2672383761, 0.2689198206, 0.2706004460, 0.2722802470, - 0.2739592187, 0.2756373558, 0.2773146533, 0.2789911060, 0.2806667089, - 0.2823414568, 0.2840153447, 0.2856883674, 0.2873605198, 0.2890317969, - 0.2907021936, 0.2923717047, 0.2940403252, 0.2957080500, 0.2973748741, - 0.2990407923, 0.3007057995, 0.3023698908, 0.3040330609, 0.3056953050, - 0.3073566178, 0.3090169944, 0.3106764296, 0.3123349185, 0.3139924560, - 0.3156490369, 0.3173046564, 0.3189593093, 0.3206129906, 0.3222656952, - 0.3239174182, 0.3255681545, 0.3272178990, 0.3288666467, 0.3305143927, - 0.3321611319, 0.3338068592, 0.3354515698, 0.3370952584, 0.3387379202, - 0.3403795502, 0.3420201433, 0.3436596946, 0.3452981990, 0.3469356516, - 0.3485720473, 0.3502073813, 0.3518416484, 0.3534748438, 0.3551069624, - 0.3567379993, 0.3583679495, 0.3599968081, 0.3616245701, 0.3632512305, - 0.3648767843, 0.3665012267, 0.3681245527, 0.3697467573, 0.3713678356, - 0.3729877826, 0.3746065934, 0.3762242631, 0.3778407868, 0.3794561595, - 0.3810703764, 0.3826834324, 0.3842953227, 0.3859060423, 0.3875155865, - 0.3891239501, 0.3907311285, 0.3923371166, 0.3939419096, 0.3955455026, - 0.3971478906, 0.3987490689, 0.4003490326, 0.4019477767, 0.4035452964, - 0.4051415868, 0.4067366431, 0.4083304604, 0.4099230338, 0.4115143586, - 0.4131044298, 0.4146932427, 0.4162807923, 0.4178670738, 0.4194520824, - 0.4210358134, 0.4226182617, 0.4241994227, 0.4257792916, 0.4273578634, - 0.4289351334, 0.4305110968, 0.4320857488, 0.4336590846, 0.4352310994, - 0.4368017884, 0.4383711468, 0.4399391699, 0.4415058528, 0.4430711908, - 0.4446351792, 0.4461978131, 0.4477590878, 0.4493189986, 0.4508775407, - 0.4524347093, 0.4539904997, 0.4555449072, 0.4570979271, 0.4586495545, - 0.4601997848, 0.4617486132, 0.4632960351, 0.4648420457, 0.4663866403, - 0.4679298143, 0.4694715628, 0.4710118812, 0.4725507649, 0.4740882090, - 0.4756242091, 0.4771587603, 0.4786918579, 0.4802234974, 0.4817536741, - 0.4832823833, 0.4848096202, 0.4863353804, 0.4878596591, 0.4893824517, - 0.4909037536, 0.4924235601, 0.4939418666, 0.4954586684, 0.4969739610, - 0.4984877398, 0.5000000000, 0.5015107372, 0.5030199466, 0.5045276238, - 0.5060337641, 0.5075383630, 0.5090414158, 0.5105429179, 0.5120428649, - 0.5135412521, 0.5150380749, 0.5165333289, 0.5180270094, 0.5195191119, - 0.5210096318, 0.5224985647, 0.5239859060, 0.5254716511, 0.5269557955, - 0.5284383347, 0.5299192642, 0.5313985795, 0.5328762761, 0.5343523494, - 0.5358267950, 0.5372996083, 0.5387707850, 0.5402403205, 0.5417082103, - 0.5431744500, 0.5446390350, 0.5461019610, 0.5475632235, 0.5490228180, - 0.5504807401, 0.5519369853, 0.5533915492, 0.5548444274, 0.5562956155, - 0.5577451090, 0.5591929035, 0.5606389946, 0.5620833779, 0.5635260489, - 0.5649670034, 0.5664062369, 0.5678437451, 0.5692795234, 0.5707135677, - 0.5721458734, 0.5735764364, 0.5750052520, 0.5764323162, 0.5778576244, - 0.5792811723, 0.5807029557, 0.5821229702, 0.5835412114, 0.5849576750, - 0.5863723567, 0.5877852523, 0.5891963574, 0.5906056676, 0.5920131788, - 0.5934188866, 0.5948227868, 0.5962248750, 0.5976251470, 0.5990235985, - 0.6004202253, 0.6018150232, 0.6032079877, 0.6045991149, 0.6059884003, - 0.6073758397, 0.6087614290, 0.6101451639, 0.6115270402, 0.6129070537, - 0.6142852001, 0.6156614753, 0.6170358751, 0.6184083954, 0.6197790318, - 0.6211477803, 0.6225146366, 0.6238795967, 0.6252426563, 0.6266038114, - 0.6279630576, 0.6293203910, 0.6306758074, 0.6320293027, 0.6333808726, - 0.6347305132, 0.6360782203, 0.6374239897, 0.6387678175, 0.6401096995, - 0.6414496316, 0.6427876097, 0.6441236298, 0.6454576877, 0.6467897795, - 0.6481199011, 0.6494480483, 0.6507742173, 0.6520984038, 0.6534206040, - 0.6547408137, 0.6560590290, 0.6573752458, 0.6586894601, 0.6600016680, - 0.6613118653, 0.6626200482, 0.6639262127, 0.6652303547, 0.6665324702, - 0.6678325555, 0.6691306064, 0.6704266190, 0.6717205893, 0.6730125135, - 0.6743023876, 0.6755902076, 0.6768759697, 0.6781596699, 0.6794413043, - 0.6807208690, 0.6819983601, 0.6832737737, 0.6845471059, 0.6858183529, - 0.6870875108, 0.6883545757, 0.6896195437, 0.6908824111, 0.6921431739, - 0.6934018283, 0.6946583705, 0.6959127966, 0.6971651029, 0.6984152854, - 0.6996633405, 0.7009092643, 0.7021530530, 0.7033947028, 0.7046342100, - 0.7058715707, 0.7071067812, 0.7083398377, 0.7095707365, 0.7107994739, - 0.7120260460, 0.7132504492, 0.7144726796, 0.7156927337, 0.7169106077, - 0.7181262978, 0.7193398003, 0.7205511117, 0.7217602281, 0.7229671459, - 0.7241718614, 0.7253743710, 0.7265746710, 0.7277727577, 0.7289686274, - 0.7301622766, 0.7313537016, 0.7325428988, 0.7337298645, 0.7349145951, - 0.7360970871, 0.7372773368, 0.7384553406, 0.7396310950, 0.7408045963, - 0.7419758410, 0.7431448255, 0.7443115462, 0.7454759997, 0.7466381823, - 0.7477980905, 0.7489557208, 0.7501110696, 0.7512641335, 0.7524149089, - 0.7535633923, 0.7547095802, 0.7558534692, 0.7569950557, 0.7581343362, - 0.7592713073, 0.7604059656, 0.7615383075, 0.7626683297, 0.7637960286, - 0.7649214009, 0.7660444431, 0.7671651518, 0.7682835236, 0.7693995550, - 0.7705132428, 0.7716245834, 0.7727335735, 0.7738402097, 0.7749444887, - 0.7760464071, 0.7771459615, 0.7782431485, 0.7793379649, 0.7804304073, - 0.7815204724, 0.7826081569, 0.7836934573, 0.7847763705, 0.7858568932, - 0.7869350220, 0.7880107536, 0.7890840848, 0.7901550124, 0.7912235330, - 0.7922896434, 0.7933533403, 0.7944146205, 0.7954734809, 0.7965299180, - 0.7975839288, 0.7986355100, 0.7996846585, 0.8007313709, 0.8017756442, - 0.8028174752, 0.8038568606, 0.8048937974, 0.8059282822, 0.8069603121, - 0.8079898839, 0.8090169944, 0.8100416404, 0.8110638190, 0.8120835269, - 0.8131007610, 0.8141155184, 0.8151277957, 0.8161375901, 0.8171448983, - 0.8181497174, 0.8191520443, 0.8201518759, 0.8211492091, 0.8221440410, - 0.8231363685, 0.8241261886, 0.8251134983, 0.8260982945, 0.8270805743, - 0.8280603346, 0.8290375726, 0.8300122851, 0.8309844693, 0.8319541221, - 0.8329212407, 0.8338858221, 0.8348478633, 0.8358073614, 0.8367643135, - 0.8377187166, 0.8386705679, 0.8396198645, 0.8405666035, 0.8415107819, - 0.8424523970, 0.8433914458, 0.8443279255, 0.8452618332, 0.8461931661, - 0.8471219214, 0.8480480962, 0.8489716876, 0.8498926930, 0.8508111094, - 0.8517269341, 0.8526401644, 0.8535507973, 0.8544588301, 0.8553642602, - 0.8562670846, 0.8571673007, 0.8580649057, 0.8589598969, 0.8598522716, - 0.8607420270, 0.8616291604, 0.8625136692, 0.8633955506, 0.8642748020, - 0.8651514206, 0.8660254038, 0.8668967489, 0.8677654534, 0.8686315144, - 0.8694949295, 0.8703556959, 0.8712138111, 0.8720692724, 0.8729220773, - 0.8737722230, 0.8746197071, 0.8754645270, 0.8763066800, 0.8771461637, - 0.8779829754, 0.8788171127, 0.8796485729, 0.8804773535, 0.8813034521, - 0.8821268660, 0.8829475929, 0.8837656301, 0.8845809752, 0.8853936258, - 0.8862035792, 0.8870108332, 0.8878153851, 0.8886172327, 0.8894163733, - 0.8902128046, 0.8910065242, 0.8917975296, 0.8925858185, 0.8933713883, - 0.8941542368, 0.8949343616, 0.8957117602, 0.8964864304, 0.8972583697, - 0.8980275758, 0.8987940463, 0.8995577790, 0.9003187714, 0.9010770213, - 0.9018325264, 0.9025852843, 0.9033352929, 0.9040825497, 0.9048270525, - 0.9055687990, 0.9063077870, 0.9070440143, 0.9077774785, 0.9085081775, - 0.9092361090, 0.9099612709, 0.9106836608, 0.9114032766, 0.9121201162, - 0.9128341772, 0.9135454576, 0.9142539552, 0.9149596678, 0.9156625933, - 0.9163627296, 0.9170600744, 0.9177546257, 0.9184463813, 0.9191353393, - 0.9198214973, 0.9205048535, 0.9211854056, 0.9218631516, 0.9225380895, - 0.9232102171, 0.9238795325, 0.9245460336, 0.9252097184, 0.9258705848, - 0.9265286309, 0.9271838546, 0.9278362539, 0.9284858269, 0.9291325715, - 0.9297764859, 0.9304175680, 0.9310558159, 0.9316912276, 0.9323238012, - 0.9329535348, 0.9335804265, 0.9342044743, 0.9348256764, 0.9354440308, - 0.9360595357, 0.9366721892, 0.9372819895, 0.9378889346, 0.9384930228, - 0.9390942521, 0.9396926208, 0.9402881270, 0.9408807690, 0.9414705448, - 0.9420574528, 0.9426414911, 0.9432226579, 0.9438009516, 0.9443763702, - 0.9449489122, 0.9455185756, 0.9460853588, 0.9466492601, 0.9472102777, - 0.9477684100, 0.9483236552, 0.9488760116, 0.9494254776, 0.9499720515, - 0.9505157316, 0.9510565163, 0.9515944039, 0.9521293927, 0.9526614813, - 0.9531906678, 0.9537169507, 0.9542403285, 0.9547607995, 0.9552783621, - 0.9557930148, 0.9563047560, 0.9568135841, 0.9573194975, 0.9578224948, - 0.9583225745, 0.9588197349, 0.9593139745, 0.9598052920, 0.9602936857, - 0.9607791542, 0.9612616959, 0.9617413095, 0.9622179935, 0.9626917464, - 0.9631625668, 0.9636304532, 0.9640954042, 0.9645574185, 0.9650164945, - 0.9654726309, 0.9659258263, 0.9663760793, 0.9668233886, 0.9672677528, - 0.9677091705, 0.9681476404, 0.9685831611, 0.9690157314, 0.9694453499, - 0.9698720153, 0.9702957263, 0.9707164816, 0.9711342799, 0.9715491200, - 0.9719610006, 0.9723699204, 0.9727758782, 0.9731788728, 0.9735789029, - 0.9739759673, 0.9743700648, 0.9747611942, 0.9751493543, 0.9755345439, - 0.9759167619, 0.9762960071, 0.9766722783, 0.9770455744, 0.9774158943, - 0.9777832368, 0.9781476007, 0.9785089851, 0.9788673888, 0.9792228106, - 0.9795752496, 0.9799247046, 0.9802711746, 0.9806146585, 0.9809551553, - 0.9812926640, 0.9816271834, 0.9819587127, 0.9822872507, 0.9826127965, - 0.9829353491, 0.9832549076, 0.9835714708, 0.9838850379, 0.9841956080, - 0.9845031800, 0.9848077530, 0.9851093262, 0.9854078985, 0.9857034691, - 0.9859960371, 0.9862856015, 0.9865721616, 0.9868557164, 0.9871362651, - 0.9874138068, 0.9876883406, 0.9879598658, 0.9882283814, 0.9884938868, - 0.9887563810, 0.9890158634, 0.9892723330, 0.9895257891, 0.9897762309, - 0.9900236577, 0.9902680687, 0.9905094632, 0.9907478405, 0.9909831997, - 0.9912155403, 0.9914448614, 0.9916711624, 0.9918944426, 0.9921147013, - 0.9923319379, 0.9925461516, 0.9927573419, 0.9929655081, 0.9931706495, - 0.9933727656, 0.9935718557, 0.9937679192, 0.9939609555, 0.9941509640, - 0.9943379441, 0.9945218954, 0.9947028171, 0.9948807088, 0.9950555700, - 0.9952274000, 0.9953961984, 0.9955619646, 0.9957246982, 0.9958843986, - 0.9960410654, 0.9961946981, 0.9963452962, 0.9964928592, 0.9966373868, - 0.9967788785, 0.9969173337, 0.9970527522, 0.9971851335, 0.9973144772, - 0.9974407829, 0.9975640503, 0.9976842788, 0.9978014683, 0.9979156183, - 0.9980267284, 0.9981347984, 0.9982398279, 0.9983418166, 0.9984407642, - 0.9985366703, 0.9986295348, 0.9987193572, 0.9988061373, 0.9988898750, - 0.9989705698, 0.9990482216, 0.9991228301, 0.9991943951, 0.9992629164, - 0.9993283938, 0.9993908270, 0.9994502159, 0.9995065604, 0.9995598601, - 0.9996101150, 0.9996573250, 0.9997014898, 0.9997426093, 0.9997806835, - 0.9998157121, 0.9998476952, 0.9998766325, 0.9999025240, 0.9999253697, - 0.9999451694, 0.9999619231, 0.9999756307, 0.9999862922, 0.9999939077, + 1.0000000000, 0.9999984769, 0.9999939077, 0.9999862922, + 0.9999756307, 0.9999619231, 0.9999451694, 0.9999253697, 0.9999025240, + 0.9998766325, 0.9998476952, 0.9998157121, 0.9997806835, 0.9997426093, + 0.9997014898, 0.9996573250, 0.9996101150, 0.9995598601, 0.9995065604, + 0.9994502159, 0.9993908270, 0.9993283938, 0.9992629164, 0.9991943951, + 0.9991228301, 0.9990482216, 0.9989705698, 0.9988898750, 0.9988061373, + 0.9987193572, 0.9986295348, 0.9985366703, 0.9984407642, 0.9983418166, + 0.9982398279, 0.9981347984, 0.9980267284, 0.9979156183, 0.9978014683, + 0.9976842788, 0.9975640503, 0.9974407829, 0.9973144772, 0.9971851335, + 0.9970527522, 0.9969173337, 0.9967788785, 0.9966373868, 0.9964928592, + 0.9963452962, 0.9961946981, 0.9960410654, 0.9958843986, 0.9957246982, + 0.9955619646, 0.9953961984, 0.9952274000, 0.9950555700, 0.9948807088, + 0.9947028171, 0.9945218954, 0.9943379441, 0.9941509640, 0.9939609555, + 0.9937679192, 0.9935718557, 0.9933727656, 0.9931706495, 0.9929655081, + 0.9927573419, 0.9925461516, 0.9923319379, 0.9921147013, 0.9918944426, + 0.9916711624, 0.9914448614, 0.9912155403, 0.9909831997, 0.9907478405, + 0.9905094632, 0.9902680687, 0.9900236577, 0.9897762309, 0.9895257891, + 0.9892723330, 0.9890158634, 0.9887563810, 0.9884938868, 0.9882283814, + 0.9879598658, 0.9876883406, 0.9874138068, 0.9871362651, 0.9868557164, + 0.9865721616, 0.9862856015, 0.9859960371, 0.9857034691, 0.9854078985, + 0.9851093262, 0.9848077530, 0.9845031800, 0.9841956080, 0.9838850379, + 0.9835714708, 0.9832549076, 0.9829353491, 0.9826127965, 0.9822872507, + 0.9819587127, 0.9816271834, 0.9812926640, 0.9809551553, 0.9806146585, + 0.9802711746, 0.9799247046, 0.9795752496, 0.9792228106, 0.9788673888, + 0.9785089851, 0.9781476007, 0.9777832368, 0.9774158943, 0.9770455744, + 0.9766722783, 0.9762960071, 0.9759167619, 0.9755345439, 0.9751493543, + 0.9747611942, 0.9743700648, 0.9739759673, 0.9735789029, 0.9731788728, + 0.9727758782, 0.9723699204, 0.9719610006, 0.9715491200, 0.9711342799, + 0.9707164816, 0.9702957263, 0.9698720153, 0.9694453499, 0.9690157314, + 0.9685831611, 0.9681476404, 0.9677091705, 0.9672677528, 0.9668233886, + 0.9663760793, 0.9659258263, 0.9654726309, 0.9650164945, 0.9645574185, + 0.9640954042, 0.9636304532, 0.9631625668, 0.9626917464, 0.9622179935, + 0.9617413095, 0.9612616959, 0.9607791542, 0.9602936857, 0.9598052920, + 0.9593139745, 0.9588197349, 0.9583225745, 0.9578224948, 0.9573194975, + 0.9568135841, 0.9563047560, 0.9557930148, 0.9552783621, 0.9547607995, + 0.9542403285, 0.9537169507, 0.9531906678, 0.9526614813, 0.9521293927, + 0.9515944039, 0.9510565163, 0.9505157316, 0.9499720515, 0.9494254776, + 0.9488760116, 0.9483236552, 0.9477684100, 0.9472102777, 0.9466492601, + 0.9460853588, 0.9455185756, 0.9449489122, 0.9443763702, 0.9438009516, + 0.9432226579, 0.9426414911, 0.9420574528, 0.9414705448, 0.9408807690, + 0.9402881270, 0.9396926208, 0.9390942521, 0.9384930228, 0.9378889346, + 0.9372819895, 0.9366721892, 0.9360595357, 0.9354440308, 0.9348256764, + 0.9342044743, 0.9335804265, 0.9329535348, 0.9323238012, 0.9316912276, + 0.9310558159, 0.9304175680, 0.9297764859, 0.9291325715, 0.9284858269, + 0.9278362539, 0.9271838546, 0.9265286309, 0.9258705848, 0.9252097184, + 0.9245460336, 0.9238795325, 0.9232102171, 0.9225380895, 0.9218631516, + 0.9211854056, 0.9205048535, 0.9198214973, 0.9191353393, 0.9184463813, + 0.9177546257, 0.9170600744, 0.9163627296, 0.9156625933, 0.9149596678, + 0.9142539552, 0.9135454576, 0.9128341772, 0.9121201162, 0.9114032766, + 0.9106836608, 0.9099612709, 0.9092361090, 0.9085081775, 0.9077774785, + 0.9070440143, 0.9063077870, 0.9055687990, 0.9048270525, 0.9040825497, + 0.9033352929, 0.9025852843, 0.9018325264, 0.9010770213, 0.9003187714, + 0.8995577790, 0.8987940463, 0.8980275758, 0.8972583697, 0.8964864304, + 0.8957117602, 0.8949343616, 0.8941542368, 0.8933713883, 0.8925858185, + 0.8917975296, 0.8910065242, 0.8902128046, 0.8894163733, 0.8886172327, + 0.8878153851, 0.8870108332, 0.8862035792, 0.8853936258, 0.8845809752, + 0.8837656301, 0.8829475929, 0.8821268660, 0.8813034521, 0.8804773535, + 0.8796485729, 0.8788171127, 0.8779829754, 0.8771461637, 0.8763066800, + 0.8754645270, 0.8746197071, 0.8737722230, 0.8729220773, 0.8720692724, + 0.8712138111, 0.8703556959, 0.8694949295, 0.8686315144, 0.8677654534, + 0.8668967489, 0.8660254038, 0.8651514206, 0.8642748020, 0.8633955506, + 0.8625136692, 0.8616291604, 0.8607420270, 0.8598522716, 0.8589598969, + 0.8580649057, 0.8571673007, 0.8562670846, 0.8553642602, 0.8544588301, + 0.8535507973, 0.8526401644, 0.8517269341, 0.8508111094, 0.8498926930, + 0.8489716876, 0.8480480962, 0.8471219214, 0.8461931661, 0.8452618332, + 0.8443279255, 0.8433914458, 0.8424523970, 0.8415107819, 0.8405666035, + 0.8396198645, 0.8386705679, 0.8377187166, 0.8367643135, 0.8358073614, + 0.8348478633, 0.8338858221, 0.8329212407, 0.8319541221, 0.8309844693, + 0.8300122851, 0.8290375726, 0.8280603346, 0.8270805743, 0.8260982945, + 0.8251134983, 0.8241261886, 0.8231363685, 0.8221440410, 0.8211492091, + 0.8201518759, 0.8191520443, 0.8181497174, 0.8171448983, 0.8161375901, + 0.8151277957, 0.8141155184, 0.8131007610, 0.8120835269, 0.8110638190, + 0.8100416404, 0.8090169944, 0.8079898839, 0.8069603121, 0.8059282822, + 0.8048937974, 0.8038568606, 0.8028174752, 0.8017756442, 0.8007313709, + 0.7996846585, 0.7986355100, 0.7975839288, 0.7965299180, 0.7954734809, + 0.7944146205, 0.7933533403, 0.7922896434, 0.7912235330, 0.7901550124, + 0.7890840848, 0.7880107536, 0.7869350220, 0.7858568932, 0.7847763705, + 0.7836934573, 0.7826081569, 0.7815204724, 0.7804304073, 0.7793379649, + 0.7782431485, 0.7771459615, 0.7760464071, 0.7749444887, 0.7738402097, + 0.7727335735, 0.7716245834, 0.7705132428, 0.7693995550, 0.7682835236, + 0.7671651518, 0.7660444431, 0.7649214009, 0.7637960286, 0.7626683297, + 0.7615383075, 0.7604059656, 0.7592713073, 0.7581343362, 0.7569950557, + 0.7558534692, 0.7547095802, 0.7535633923, 0.7524149089, 0.7512641335, + 0.7501110696, 0.7489557208, 0.7477980905, 0.7466381823, 0.7454759997, + 0.7443115462, 0.7431448255, 0.7419758410, 0.7408045963, 0.7396310950, + 0.7384553406, 0.7372773368, 0.7360970871, 0.7349145951, 0.7337298645, + 0.7325428988, 0.7313537016, 0.7301622766, 0.7289686274, 0.7277727577, + 0.7265746710, 0.7253743710, 0.7241718614, 0.7229671459, 0.7217602281, + 0.7205511117, 0.7193398003, 0.7181262978, 0.7169106077, 0.7156927337, + 0.7144726796, 0.7132504492, 0.7120260460, 0.7107994739, 0.7095707365, + 0.7083398377, 0.7071067812, 0.7058715707, 0.7046342100, 0.7033947028, + 0.7021530530, 0.7009092643, 0.6996633405, 0.6984152854, 0.6971651029, + 0.6959127966, 0.6946583705, 0.6934018283, 0.6921431739, 0.6908824111, + 0.6896195437, 0.6883545757, 0.6870875108, 0.6858183529, 0.6845471059, + 0.6832737737, 0.6819983601, 0.6807208690, 0.6794413043, 0.6781596699, + 0.6768759697, 0.6755902076, 0.6743023876, 0.6730125135, 0.6717205893, + 0.6704266190, 0.6691306064, 0.6678325555, 0.6665324702, 0.6652303547, + 0.6639262127, 0.6626200482, 0.6613118653, 0.6600016680, 0.6586894601, + 0.6573752458, 0.6560590290, 0.6547408137, 0.6534206040, 0.6520984038, + 0.6507742173, 0.6494480483, 0.6481199011, 0.6467897795, 0.6454576877, + 0.6441236298, 0.6427876097, 0.6414496316, 0.6401096995, 0.6387678175, + 0.6374239897, 0.6360782203, 0.6347305132, 0.6333808726, 0.6320293027, + 0.6306758074, 0.6293203910, 0.6279630576, 0.6266038114, 0.6252426563, + 0.6238795967, 0.6225146366, 0.6211477803, 0.6197790318, 0.6184083954, + 0.6170358751, 0.6156614753, 0.6142852001, 0.6129070537, 0.6115270402, + 0.6101451639, 0.6087614290, 0.6073758397, 0.6059884003, 0.6045991149, + 0.6032079877, 0.6018150232, 0.6004202253, 0.5990235985, 0.5976251470, + 0.5962248750, 0.5948227868, 0.5934188866, 0.5920131788, 0.5906056676, + 0.5891963574, 0.5877852523, 0.5863723567, 0.5849576750, 0.5835412114, + 0.5821229702, 0.5807029557, 0.5792811723, 0.5778576244, 0.5764323162, + 0.5750052520, 0.5735764364, 0.5721458734, 0.5707135677, 0.5692795234, + 0.5678437451, 0.5664062369, 0.5649670034, 0.5635260489, 0.5620833779, + 0.5606389946, 0.5591929035, 0.5577451090, 0.5562956155, 0.5548444274, + 0.5533915492, 0.5519369853, 0.5504807401, 0.5490228180, 0.5475632235, + 0.5461019610, 0.5446390350, 0.5431744500, 0.5417082103, 0.5402403205, + 0.5387707850, 0.5372996083, 0.5358267950, 0.5343523494, 0.5328762761, + 0.5313985795, 0.5299192642, 0.5284383347, 0.5269557955, 0.5254716511, + 0.5239859060, 0.5224985647, 0.5210096318, 0.5195191119, 0.5180270094, + 0.5165333289, 0.5150380749, 0.5135412521, 0.5120428649, 0.5105429179, + 0.5090414158, 0.5075383630, 0.5060337641, 0.5045276238, 0.5030199466, + 0.5015107372, 0.5000000000, 0.4984877398, 0.4969739610, 0.4954586684, + 0.4939418666, 0.4924235601, 0.4909037536, 0.4893824517, 0.4878596591, + 0.4863353804, 0.4848096202, 0.4832823833, 0.4817536741, 0.4802234974, + 0.4786918579, 0.4771587603, 0.4756242091, 0.4740882090, 0.4725507649, + 0.4710118812, 0.4694715628, 0.4679298143, 0.4663866403, 0.4648420457, + 0.4632960351, 0.4617486132, 0.4601997848, 0.4586495545, 0.4570979271, + 0.4555449072, 0.4539904997, 0.4524347093, 0.4508775407, 0.4493189986, + 0.4477590878, 0.4461978131, 0.4446351792, 0.4430711908, 0.4415058528, + 0.4399391699, 0.4383711468, 0.4368017884, 0.4352310994, 0.4336590846, + 0.4320857488, 0.4305110968, 0.4289351334, 0.4273578634, 0.4257792916, + 0.4241994227, 0.4226182617, 0.4210358134, 0.4194520824, 0.4178670738, + 0.4162807923, 0.4146932427, 0.4131044298, 0.4115143586, 0.4099230338, + 0.4083304604, 0.4067366431, 0.4051415868, 0.4035452964, 0.4019477767, + 0.4003490326, 0.3987490689, 0.3971478906, 0.3955455026, 0.3939419096, + 0.3923371166, 0.3907311285, 0.3891239501, 0.3875155865, 0.3859060423, + 0.3842953227, 0.3826834324, 0.3810703764, 0.3794561595, 0.3778407868, + 0.3762242631, 0.3746065934, 0.3729877826, 0.3713678356, 0.3697467573, + 0.3681245527, 0.3665012267, 0.3648767843, 0.3632512305, 0.3616245701, + 0.3599968081, 0.3583679495, 0.3567379993, 0.3551069624, 0.3534748438, + 0.3518416484, 0.3502073813, 0.3485720473, 0.3469356516, 0.3452981990, + 0.3436596946, 0.3420201433, 0.3403795502, 0.3387379202, 0.3370952584, + 0.3354515698, 0.3338068592, 0.3321611319, 0.3305143927, 0.3288666467, + 0.3272178990, 0.3255681545, 0.3239174182, 0.3222656952, 0.3206129906, + 0.3189593093, 0.3173046564, 0.3156490369, 0.3139924560, 0.3123349185, + 0.3106764296, 0.3090169944, 0.3073566178, 0.3056953050, 0.3040330609, + 0.3023698908, 0.3007057995, 0.2990407923, 0.2973748741, 0.2957080500, + 0.2940403252, 0.2923717047, 0.2907021936, 0.2890317969, 0.2873605198, + 0.2856883674, 0.2840153447, 0.2823414568, 0.2806667089, 0.2789911060, + 0.2773146533, 0.2756373558, 0.2739592187, 0.2722802470, 0.2706004460, + 0.2689198206, 0.2672383761, 0.2655561175, 0.2638730500, 0.2621891786, + 0.2605045086, 0.2588190451, 0.2571327932, 0.2554457579, 0.2537579446, + 0.2520693582, 0.2503800041, 0.2486898872, 0.2469990127, 0.2453073859, + 0.2436150118, 0.2419218956, 0.2402280425, 0.2385334576, 0.2368381461, + 0.2351421131, 0.2334453639, 0.2317479035, 0.2300497372, 0.2283508701, + 0.2266513074, 0.2249510543, 0.2232501160, 0.2215484976, 0.2198462044, + 0.2181432414, 0.2164396139, 0.2147353272, 0.2130303863, 0.2113247965, + 0.2096185629, 0.2079116908, 0.2062041854, 0.2044960518, 0.2027872954, + 0.2010779211, 0.1993679344, 0.1976573404, 0.1959461442, 0.1942343512, + 0.1925219665, 0.1908089954, 0.1890954430, 0.1873813146, 0.1856666154, + 0.1839513506, 0.1822355255, 0.1805191453, 0.1788022151, 0.1770847403, + 0.1753667261, 0.1736481777, 0.1719291003, 0.1702094992, 0.1684893796, + 0.1667687467, 0.1650476059, 0.1633259622, 0.1616038211, 0.1598811877, + 0.1581580673, 0.1564344650, 0.1547103863, 0.1529858363, 0.1512608202, + 0.1495353434, 0.1478094111, 0.1460830286, 0.1443562010, 0.1426289337, + 0.1409012319, 0.1391731010, 0.1374445460, 0.1357155724, 0.1339861854, + 0.1322563903, 0.1305261922, 0.1287955966, 0.1270646086, 0.1253332336, + 0.1236014767, 0.1218693434, 0.1201368388, 0.1184039683, 0.1166707371, + 0.1149371505, 0.1132032138, 0.1114689322, 0.1097343111, 0.1079993557, + 0.1062640713, 0.1045284633, 0.1027925368, 0.1010562972, 0.0993197497, + 0.0975828998, 0.0958457525, 0.0941083133, 0.0923705874, 0.0906325802, + 0.0888942969, 0.0871557427, 0.0854169231, 0.0836778433, 0.0819385086, + 0.0801989243, 0.0784590957, 0.0767190281, 0.0749787268, 0.0732381971, + 0.0714974443, 0.0697564737, 0.0680152907, 0.0662739004, 0.0645323083, + 0.0627905195, 0.0610485395, 0.0593063736, 0.0575640270, 0.0558215050, + 0.0540788130, 0.0523359562, 0.0505929401, 0.0488497698, 0.0471064507, + 0.0453629881, 0.0436193874, 0.0418756537, 0.0401317925, 0.0383878091, + 0.0366437087, 0.0348994967, 0.0331551784, 0.0314107591, 0.0296662441, + 0.0279216387, 0.0261769483, 0.0244321782, 0.0226873336, 0.0209424199, + 0.0191974424, 0.0174524064, 0.0157073173, 0.0139621803, 0.0122170008, + 0.0104717841, 0.0087265355, 0.0069812603, 0.0052359638, 0.0034906514, + 0.0017453284, 0.0000000000, -0.0017453284, -0.0034906514,-0.0052359638, + -0.0069812603, -0.0087265355, -0.0104717841, -0.0122170008,-0.0139621803, + -0.0157073173, -0.0174524064, -0.0191974424, -0.0209424199,-0.0226873336, + -0.0244321782, -0.0261769483, -0.0279216387, -0.0296662441,-0.0314107591, + -0.0331551784, -0.0348994967, -0.0366437087, -0.0383878091,-0.0401317925, + -0.0418756537, -0.0436193874, -0.0453629881, -0.0471064507,-0.0488497698, + -0.0505929401, -0.0523359562, -0.0540788130, -0.0558215050,-0.0575640270, + -0.0593063736, -0.0610485395, -0.0627905195, -0.0645323083,-0.0662739004, + -0.0680152907, -0.0697564737, -0.0714974443, -0.0732381971,-0.0749787268, + -0.0767190281, -0.0784590957, -0.0801989243, -0.0819385086,-0.0836778433, + -0.0854169231, -0.0871557427, -0.0888942969, -0.0906325802,-0.0923705874, + -0.0941083133, -0.0958457525, -0.0975828998, -0.0993197497,-0.1010562972, + -0.1027925368, -0.1045284633, -0.1062640713, -0.1079993557,-0.1097343111, + -0.1114689322, -0.1132032138, -0.1149371505, -0.1166707371,-0.1184039683, + -0.1201368388, -0.1218693434, -0.1236014767, -0.1253332336,-0.1270646086, + -0.1287955966, -0.1305261922, -0.1322563903, -0.1339861854,-0.1357155724, + -0.1374445460, -0.1391731010, -0.1409012319, -0.1426289337,-0.1443562010, + -0.1460830286, -0.1478094111, -0.1495353434, -0.1512608202,-0.1529858363, + -0.1547103863, -0.1564344650, -0.1581580673, -0.1598811877,-0.1616038211, + -0.1633259622, -0.1650476059, -0.1667687467, -0.1684893796,-0.1702094992, + -0.1719291003, -0.1736481777, -0.1753667261, -0.1770847403,-0.1788022151, + -0.1805191453, -0.1822355255, -0.1839513506, -0.1856666154,-0.1873813146, + -0.1890954430, -0.1908089954, -0.1925219665, -0.1942343512,-0.1959461442, + -0.1976573404, -0.1993679344, -0.2010779211, -0.2027872954,-0.2044960518, + -0.2062041854, -0.2079116908, -0.2096185629, -0.2113247965,-0.2130303863, + -0.2147353272, -0.2164396139, -0.2181432414, -0.2198462044,-0.2215484976, + -0.2232501160, -0.2249510543, -0.2266513074, -0.2283508701,-0.2300497372, + -0.2317479035, -0.2334453639, -0.2351421131, -0.2368381461,-0.2385334576, + -0.2402280425, -0.2419218956, -0.2436150118, -0.2453073859,-0.2469990127, + -0.2486898872, -0.2503800041, -0.2520693582, -0.2537579446,-0.2554457579, + -0.2571327932, -0.2588190451, -0.2605045086, -0.2621891786,-0.2638730500, + -0.2655561175, -0.2672383761, -0.2689198206, -0.2706004460,-0.2722802470, + -0.2739592187, -0.2756373558, -0.2773146533, -0.2789911060,-0.2806667089, + -0.2823414568, -0.2840153447, -0.2856883674, -0.2873605198,-0.2890317969, + -0.2907021936, -0.2923717047, -0.2940403252, -0.2957080500,-0.2973748741, + -0.2990407923, -0.3007057995, -0.3023698908, -0.3040330609,-0.3056953050, + -0.3073566178, -0.3090169944, -0.3106764296, -0.3123349185,-0.3139924560, + -0.3156490369, -0.3173046564, -0.3189593093, -0.3206129906,-0.3222656952, + -0.3239174182, -0.3255681545, -0.3272178990, -0.3288666467,-0.3305143927, + -0.3321611319, -0.3338068592, -0.3354515698, -0.3370952584,-0.3387379202, + -0.3403795502, -0.3420201433, -0.3436596946, -0.3452981990,-0.3469356516, + -0.3485720473, -0.3502073813, -0.3518416484, -0.3534748438,-0.3551069624, + -0.3567379993, -0.3583679495, -0.3599968081, -0.3616245701,-0.3632512305, + -0.3648767843, -0.3665012267, -0.3681245527, -0.3697467573,-0.3713678356, + -0.3729877826, -0.3746065934, -0.3762242631, -0.3778407868,-0.3794561595, + -0.3810703764, -0.3826834324, -0.3842953227, -0.3859060423,-0.3875155865, + -0.3891239501, -0.3907311285, -0.3923371166, -0.3939419096,-0.3955455026, + -0.3971478906, -0.3987490689, -0.4003490326, -0.4019477767,-0.4035452964, + -0.4051415868, -0.4067366431, -0.4083304604, -0.4099230338,-0.4115143586, + -0.4131044298, -0.4146932427, -0.4162807923, -0.4178670738,-0.4194520824, + -0.4210358134, -0.4226182617, -0.4241994227, -0.4257792916,-0.4273578634, + -0.4289351334, -0.4305110968, -0.4320857488, -0.4336590846,-0.4352310994, + -0.4368017884, -0.4383711468, -0.4399391699, -0.4415058528,-0.4430711908, + -0.4446351792, -0.4461978131, -0.4477590878, -0.4493189986,-0.4508775407, + -0.4524347093, -0.4539904997, -0.4555449072, -0.4570979271,-0.4586495545, + -0.4601997848, -0.4617486132, -0.4632960351, -0.4648420457,-0.4663866403, + -0.4679298143, -0.4694715628, -0.4710118812, -0.4725507649,-0.4740882090, + -0.4756242091, -0.4771587603, -0.4786918579, -0.4802234974,-0.4817536741, + -0.4832823833, -0.4848096202, -0.4863353804, -0.4878596591,-0.4893824517, + -0.4909037536, -0.4924235601, -0.4939418666, -0.4954586684,-0.4969739610, + -0.4984877398, -0.5000000000, -0.5015107372, -0.5030199466,-0.5045276238, + -0.5060337641, -0.5075383630, -0.5090414158, -0.5105429179,-0.5120428649, + -0.5135412521, -0.5150380749, -0.5165333289, -0.5180270094,-0.5195191119, + -0.5210096318, -0.5224985647, -0.5239859060, -0.5254716511,-0.5269557955, + -0.5284383347, -0.5299192642, -0.5313985795, -0.5328762761,-0.5343523494, + -0.5358267950, -0.5372996083, -0.5387707850, -0.5402403205,-0.5417082103, + -0.5431744500, -0.5446390350, -0.5461019610, -0.5475632235,-0.5490228180, + -0.5504807401, -0.5519369853, -0.5533915492, -0.5548444274,-0.5562956155, + -0.5577451090, -0.5591929035, -0.5606389946, -0.5620833779,-0.5635260489, + -0.5649670034, -0.5664062369, -0.5678437451, -0.5692795234,-0.5707135677, + -0.5721458734, -0.5735764364, -0.5750052520, -0.5764323162,-0.5778576244, + -0.5792811723, -0.5807029557, -0.5821229702, -0.5835412114,-0.5849576750, + -0.5863723567, -0.5877852523, -0.5891963574, -0.5906056676,-0.5920131788, + -0.5934188866, -0.5948227868, -0.5962248750, -0.5976251470,-0.5990235985, + -0.6004202253, -0.6018150232, -0.6032079877, -0.6045991149,-0.6059884003, + -0.6073758397, -0.6087614290, -0.6101451639, -0.6115270402,-0.6129070537, + -0.6142852001, -0.6156614753, -0.6170358751, -0.6184083954,-0.6197790318, + -0.6211477803, -0.6225146366, -0.6238795967, -0.6252426563,-0.6266038114, + -0.6279630576, -0.6293203910, -0.6306758074, -0.6320293027,-0.6333808726, + -0.6347305132, -0.6360782203, -0.6374239897, -0.6387678175,-0.6401096995, + -0.6414496316, -0.6427876097, -0.6441236298, -0.6454576877,-0.6467897795, + -0.6481199011, -0.6494480483, -0.6507742173, -0.6520984038,-0.6534206040, + -0.6547408137, -0.6560590290, -0.6573752458, -0.6586894601,-0.6600016680, + -0.6613118653, -0.6626200482, -0.6639262127, -0.6652303547,-0.6665324702, + -0.6678325555, -0.6691306064, -0.6704266190, -0.6717205893,-0.6730125135, + -0.6743023876, -0.6755902076, -0.6768759697, -0.6781596699,-0.6794413043, + -0.6807208690, -0.6819983601, -0.6832737737, -0.6845471059,-0.6858183529, + -0.6870875108, -0.6883545757, -0.6896195437, -0.6908824111,-0.6921431739, + -0.6934018283, -0.6946583705, -0.6959127966, -0.6971651029,-0.6984152854, + -0.6996633405, -0.7009092643, -0.7021530530, -0.7033947028,-0.7046342100, + -0.7058715707, -0.7071067812, -0.7083398377, -0.7095707365,-0.7107994739, + -0.7120260460, -0.7132504492, -0.7144726796, -0.7156927337,-0.7169106077, + -0.7181262978, -0.7193398003, -0.7205511117, -0.7217602281,-0.7229671459, + -0.7241718614, -0.7253743710, -0.7265746710, -0.7277727577,-0.7289686274, + -0.7301622766, -0.7313537016, -0.7325428988, -0.7337298645,-0.7349145951, + -0.7360970871, -0.7372773368, -0.7384553406, -0.7396310950,-0.7408045963, + -0.7419758410, -0.7431448255, -0.7443115462, -0.7454759997,-0.7466381823, + -0.7477980905, -0.7489557208, -0.7501110696, -0.7512641335,-0.7524149089, + -0.7535633923, -0.7547095802, -0.7558534692, -0.7569950557,-0.7581343362, + -0.7592713073, -0.7604059656, -0.7615383075, -0.7626683297,-0.7637960286, + -0.7649214009, -0.7660444431, -0.7671651518, -0.7682835236,-0.7693995550, + -0.7705132428, -0.7716245834, -0.7727335735, -0.7738402097,-0.7749444887, + -0.7760464071, -0.7771459615, -0.7782431485, -0.7793379649,-0.7804304073, + -0.7815204724, -0.7826081569, -0.7836934573, -0.7847763705,-0.7858568932, + -0.7869350220, -0.7880107536, -0.7890840848, -0.7901550124,-0.7912235330, + -0.7922896434, -0.7933533403, -0.7944146205, -0.7954734809,-0.7965299180, + -0.7975839288, -0.7986355100, -0.7996846585, -0.8007313709,-0.8017756442, + -0.8028174752, -0.8038568606, -0.8048937974, -0.8059282822,-0.8069603121, + -0.8079898839, -0.8090169944, -0.8100416404, -0.8110638190,-0.8120835269, + -0.8131007610, -0.8141155184, -0.8151277957, -0.8161375901,-0.8171448983, + -0.8181497174, -0.8191520443, -0.8201518759, -0.8211492091,-0.8221440410, + -0.8231363685, -0.8241261886, -0.8251134983, -0.8260982945,-0.8270805743, + -0.8280603346, -0.8290375726, -0.8300122851, -0.8309844693,-0.8319541221, + -0.8329212407, -0.8338858221, -0.8348478633, -0.8358073614,-0.8367643135, + -0.8377187166, -0.8386705679, -0.8396198645, -0.8405666035,-0.8415107819, + -0.8424523970, -0.8433914458, -0.8443279255, -0.8452618332,-0.8461931661, + -0.8471219214, -0.8480480962, -0.8489716876, -0.8498926930,-0.8508111094, + -0.8517269341, -0.8526401644, -0.8535507973, -0.8544588301,-0.8553642602, + -0.8562670846, -0.8571673007, -0.8580649057, -0.8589598969,-0.8598522716, + -0.8607420270, -0.8616291604, -0.8625136692, -0.8633955506,-0.8642748020, + -0.8651514206, -0.8660254038, -0.8668967489, -0.8677654534,-0.8686315144, + -0.8694949295, -0.8703556959, -0.8712138111, -0.8720692724,-0.8729220773, + -0.8737722230, -0.8746197071, -0.8754645270, -0.8763066800,-0.8771461637, + -0.8779829754, -0.8788171127, -0.8796485729, -0.8804773535,-0.8813034521, + -0.8821268660, -0.8829475929, -0.8837656301, -0.8845809752,-0.8853936258, + -0.8862035792, -0.8870108332, -0.8878153851, -0.8886172327,-0.8894163733, + -0.8902128046, -0.8910065242, -0.8917975296, -0.8925858185,-0.8933713883, + -0.8941542368, -0.8949343616, -0.8957117602, -0.8964864304,-0.8972583697, + -0.8980275758, -0.8987940463, -0.8995577790, -0.9003187714,-0.9010770213, + -0.9018325264, -0.9025852843, -0.9033352929, -0.9040825497,-0.9048270525, + -0.9055687990, -0.9063077870, -0.9070440143, -0.9077774785,-0.9085081775, + -0.9092361090, -0.9099612709, -0.9106836608, -0.9114032766,-0.9121201162, + -0.9128341772, -0.9135454576, -0.9142539552, -0.9149596678,-0.9156625933, + -0.9163627296, -0.9170600744, -0.9177546257, -0.9184463813,-0.9191353393, + -0.9198214973, -0.9205048535, -0.9211854056, -0.9218631516,-0.9225380895, + -0.9232102171, -0.9238795325, -0.9245460336, -0.9252097184,-0.9258705848, + -0.9265286309, -0.9271838546, -0.9278362539, -0.9284858269,-0.9291325715, + -0.9297764859, -0.9304175680, -0.9310558159, -0.9316912276,-0.9323238012, + -0.9329535348, -0.9335804265, -0.9342044743, -0.9348256764,-0.9354440308, + -0.9360595357, -0.9366721892, -0.9372819895, -0.9378889346,-0.9384930228, + -0.9390942521, -0.9396926208, -0.9402881270, -0.9408807690,-0.9414705448, + -0.9420574528, -0.9426414911, -0.9432226579, -0.9438009516,-0.9443763702, + -0.9449489122, -0.9455185756, -0.9460853588, -0.9466492601,-0.9472102777, + -0.9477684100, -0.9483236552, -0.9488760116, -0.9494254776,-0.9499720515, + -0.9505157316, -0.9510565163, -0.9515944039, -0.9521293927,-0.9526614813, + -0.9531906678, -0.9537169507, -0.9542403285, -0.9547607995,-0.9552783621, + -0.9557930148, -0.9563047560, -0.9568135841, -0.9573194975,-0.9578224948, + -0.9583225745, -0.9588197349, -0.9593139745, -0.9598052920,-0.9602936857, + -0.9607791542, -0.9612616959, -0.9617413095, -0.9622179935,-0.9626917464, + -0.9631625668, -0.9636304532, -0.9640954042, -0.9645574185,-0.9650164945, + -0.9654726309, -0.9659258263, -0.9663760793, -0.9668233886,-0.9672677528, + -0.9677091705, -0.9681476404, -0.9685831611, -0.9690157314,-0.9694453499, + -0.9698720153, -0.9702957263, -0.9707164816, -0.9711342799,-0.9715491200, + -0.9719610006, -0.9723699204, -0.9727758782, -0.9731788728,-0.9735789029, + -0.9739759673, -0.9743700648, -0.9747611942, -0.9751493543,-0.9755345439, + -0.9759167619, -0.9762960071, -0.9766722783, -0.9770455744,-0.9774158943, + -0.9777832368, -0.9781476007, -0.9785089851, -0.9788673888,-0.9792228106, + -0.9795752496, -0.9799247046, -0.9802711746, -0.9806146585,-0.9809551553, + -0.9812926640, -0.9816271834, -0.9819587127, -0.9822872507,-0.9826127965, + -0.9829353491, -0.9832549076, -0.9835714708, -0.9838850379,-0.9841956080, + -0.9845031800, -0.9848077530, -0.9851093262, -0.9854078985,-0.9857034691, + -0.9859960371, -0.9862856015, -0.9865721616, -0.9868557164,-0.9871362651, + -0.9874138068, -0.9876883406, -0.9879598658, -0.9882283814,-0.9884938868, + -0.9887563810, -0.9890158634, -0.9892723330, -0.9895257891,-0.9897762309, + -0.9900236577, -0.9902680687, -0.9905094632, -0.9907478405,-0.9909831997, + -0.9912155403, -0.9914448614, -0.9916711624, -0.9918944426,-0.9921147013, + -0.9923319379, -0.9925461516, -0.9927573419, -0.9929655081,-0.9931706495, + -0.9933727656, -0.9935718557, -0.9937679192, -0.9939609555,-0.9941509640, + -0.9943379441, -0.9945218954, -0.9947028171, -0.9948807088,-0.9950555700, + -0.9952274000, -0.9953961984, -0.9955619646, -0.9957246982,-0.9958843986, + -0.9960410654, -0.9961946981, -0.9963452962, -0.9964928592,-0.9966373868, + -0.9967788785, -0.9969173337, -0.9970527522, -0.9971851335,-0.9973144772, + -0.9974407829, -0.9975640503, -0.9976842788, -0.9978014683,-0.9979156183, + -0.9980267284, -0.9981347984, -0.9982398279, -0.9983418166,-0.9984407642, + -0.9985366703, -0.9986295348, -0.9987193572, -0.9988061373,-0.9988898750, + -0.9989705698, -0.9990482216, -0.9991228301, -0.9991943951,-0.9992629164, + -0.9993283938, -0.9993908270, -0.9994502159, -0.9995065604,-0.9995598601, + -0.9996101150, -0.9996573250, -0.9997014898, -0.9997426093,-0.9997806835, + -0.9998157121, -0.9998476952, -0.9998766325, -0.9999025240,-0.9999253697, + -0.9999451694, -0.9999619231, -0.9999756307, -0.9999862922,-0.9999939077, + -0.9999984769, -1.0000000000, -0.9999984769, -0.9999939077,-0.9999862922, + -0.9999756307, -0.9999619231, -0.9999451694, -0.9999253697,-0.9999025240, + -0.9998766325, -0.9998476952, -0.9998157121, -0.9997806835,-0.9997426093, + -0.9997014898, -0.9996573250, -0.9996101150, -0.9995598601,-0.9995065604, + -0.9994502159, -0.9993908270, -0.9993283938, -0.9992629164,-0.9991943951, + -0.9991228301, -0.9990482216, -0.9989705698, -0.9988898750,-0.9988061373, + -0.9987193572, -0.9986295348, -0.9985366703, -0.9984407642,-0.9983418166, + -0.9982398279, -0.9981347984, -0.9980267284, -0.9979156183,-0.9978014683, + -0.9976842788, -0.9975640503, -0.9974407829, -0.9973144772,-0.9971851335, + -0.9970527522, -0.9969173337, -0.9967788785, -0.9966373868,-0.9964928592, + -0.9963452962, -0.9961946981, -0.9960410654, -0.9958843986,-0.9957246982, + -0.9955619646, -0.9953961984, -0.9952274000, -0.9950555700,-0.9948807088, + -0.9947028171, -0.9945218954, -0.9943379441, -0.9941509640,-0.9939609555, + -0.9937679192, -0.9935718557, -0.9933727656, -0.9931706495,-0.9929655081, + -0.9927573419, -0.9925461516, -0.9923319379, -0.9921147013,-0.9918944426, + -0.9916711624, -0.9914448614, -0.9912155403, -0.9909831997,-0.9907478405, + -0.9905094632, -0.9902680687, -0.9900236577, -0.9897762309,-0.9895257891, + -0.9892723330, -0.9890158634, -0.9887563810, -0.9884938868,-0.9882283814, + -0.9879598658, -0.9876883406, -0.9874138068, -0.9871362651,-0.9868557164, + -0.9865721616, -0.9862856015, -0.9859960371, -0.9857034691,-0.9854078985, + -0.9851093262, -0.9848077530, -0.9845031800, -0.9841956080,-0.9838850379, + -0.9835714708, -0.9832549076, -0.9829353491, -0.9826127965,-0.9822872507, + -0.9819587127, -0.9816271834, -0.9812926640, -0.9809551553,-0.9806146585, + -0.9802711746, -0.9799247046, -0.9795752496, -0.9792228106,-0.9788673888, + -0.9785089851, -0.9781476007, -0.9777832368, -0.9774158943,-0.9770455744, + -0.9766722783, -0.9762960071, -0.9759167619, -0.9755345439,-0.9751493543, + -0.9747611942, -0.9743700648, -0.9739759673, -0.9735789029,-0.9731788728, + -0.9727758782, -0.9723699204, -0.9719610006, -0.9715491200,-0.9711342799, + -0.9707164816, -0.9702957263, -0.9698720153, -0.9694453499,-0.9690157314, + -0.9685831611, -0.9681476404, -0.9677091705, -0.9672677528,-0.9668233886, + -0.9663760793, -0.9659258263, -0.9654726309, -0.9650164945,-0.9645574185, + -0.9640954042, -0.9636304532, -0.9631625668, -0.9626917464,-0.9622179935, + -0.9617413095, -0.9612616959, -0.9607791542, -0.9602936857,-0.9598052920, + -0.9593139745, -0.9588197349, -0.9583225745, -0.9578224948,-0.9573194975, + -0.9568135841, -0.9563047560, -0.9557930148, -0.9552783621,-0.9547607995, + -0.9542403285, -0.9537169507, -0.9531906678, -0.9526614813,-0.9521293927, + -0.9515944039, -0.9510565163, -0.9505157316, -0.9499720515,-0.9494254776, + -0.9488760116, -0.9483236552, -0.9477684100, -0.9472102777,-0.9466492601, + -0.9460853588, -0.9455185756, -0.9449489122, -0.9443763702,-0.9438009516, + -0.9432226579, -0.9426414911, -0.9420574528, -0.9414705448,-0.9408807690, + -0.9402881270, -0.9396926208, -0.9390942521, -0.9384930228,-0.9378889346, + -0.9372819895, -0.9366721892, -0.9360595357, -0.9354440308,-0.9348256764, + -0.9342044743, -0.9335804265, -0.9329535348, -0.9323238012,-0.9316912276, + -0.9310558159, -0.9304175680, -0.9297764859, -0.9291325715,-0.9284858269, + -0.9278362539, -0.9271838546, -0.9265286309, -0.9258705848,-0.9252097184, + -0.9245460336, -0.9238795325, -0.9232102171, -0.9225380895,-0.9218631516, + -0.9211854056, -0.9205048535, -0.9198214973, -0.9191353393,-0.9184463813, + -0.9177546257, -0.9170600744, -0.9163627296, -0.9156625933,-0.9149596678, + -0.9142539552, -0.9135454576, -0.9128341772, -0.9121201162,-0.9114032766, + -0.9106836608, -0.9099612709, -0.9092361090, -0.9085081775,-0.9077774785, + -0.9070440143, -0.9063077870, -0.9055687990, -0.9048270525,-0.9040825497, + -0.9033352929, -0.9025852843, -0.9018325264, -0.9010770213,-0.9003187714, + -0.8995577790, -0.8987940463, -0.8980275758, -0.8972583697,-0.8964864304, + -0.8957117602, -0.8949343616, -0.8941542368, -0.8933713883,-0.8925858185, + -0.8917975296, -0.8910065242, -0.8902128046, -0.8894163733,-0.8886172327, + -0.8878153851, -0.8870108332, -0.8862035792, -0.8853936258,-0.8845809752, + -0.8837656301, -0.8829475929, -0.8821268660, -0.8813034521,-0.8804773535, + -0.8796485729, -0.8788171127, -0.8779829754, -0.8771461637,-0.8763066800, + -0.8754645270, -0.8746197071, -0.8737722230, -0.8729220773,-0.8720692724, + -0.8712138111, -0.8703556959, -0.8694949295, -0.8686315144,-0.8677654534, + -0.8668967489, -0.8660254038, -0.8651514206, -0.8642748020,-0.8633955506, + -0.8625136692, -0.8616291604, -0.8607420270, -0.8598522716,-0.8589598969, + -0.8580649057, -0.8571673007, -0.8562670846, -0.8553642602,-0.8544588301, + -0.8535507973, -0.8526401644, -0.8517269341, -0.8508111094,-0.8498926930, + -0.8489716876, -0.8480480962, -0.8471219214, -0.8461931661,-0.8452618332, + -0.8443279255, -0.8433914458, -0.8424523970, -0.8415107819,-0.8405666035, + -0.8396198645, -0.8386705679, -0.8377187166, -0.8367643135,-0.8358073614, + -0.8348478633, -0.8338858221, -0.8329212407, -0.8319541221,-0.8309844693, + -0.8300122851, -0.8290375726, -0.8280603346, -0.8270805743,-0.8260982945, + -0.8251134983, -0.8241261886, -0.8231363685, -0.8221440410,-0.8211492091, + -0.8201518759, -0.8191520443, -0.8181497174, -0.8171448983,-0.8161375901, + -0.8151277957, -0.8141155184, -0.8131007610, -0.8120835269,-0.8110638190, + -0.8100416404, -0.8090169944, -0.8079898839, -0.8069603121,-0.8059282822, + -0.8048937974, -0.8038568606, -0.8028174752, -0.8017756442,-0.8007313709, + -0.7996846585, -0.7986355100, -0.7975839288, -0.7965299180,-0.7954734809, + -0.7944146205, -0.7933533403, -0.7922896434, -0.7912235330,-0.7901550124, + -0.7890840848, -0.7880107536, -0.7869350220, -0.7858568932,-0.7847763705, + -0.7836934573, -0.7826081569, -0.7815204724, -0.7804304073,-0.7793379649, + -0.7782431485, -0.7771459615, -0.7760464071, -0.7749444887,-0.7738402097, + -0.7727335735, -0.7716245834, -0.7705132428, -0.7693995550,-0.7682835236, + -0.7671651518, -0.7660444431, -0.7649214009, -0.7637960286,-0.7626683297, + -0.7615383075, -0.7604059656, -0.7592713073, -0.7581343362,-0.7569950557, + -0.7558534692, -0.7547095802, -0.7535633923, -0.7524149089,-0.7512641335, + -0.7501110696, -0.7489557208, -0.7477980905, -0.7466381823,-0.7454759997, + -0.7443115462, -0.7431448255, -0.7419758410, -0.7408045963,-0.7396310950, + -0.7384553406, -0.7372773368, -0.7360970871, -0.7349145951,-0.7337298645, + -0.7325428988, -0.7313537016, -0.7301622766, -0.7289686274,-0.7277727577, + -0.7265746710, -0.7253743710, -0.7241718614, -0.7229671459,-0.7217602281, + -0.7205511117, -0.7193398003, -0.7181262978, -0.7169106077,-0.7156927337, + -0.7144726796, -0.7132504492, -0.7120260460, -0.7107994739,-0.7095707365, + -0.7083398377, -0.7071067812, -0.7058715707, -0.7046342100,-0.7033947028, + -0.7021530530, -0.7009092643, -0.6996633405, -0.6984152854,-0.6971651029, + -0.6959127966, -0.6946583705, -0.6934018283, -0.6921431739,-0.6908824111, + -0.6896195437, -0.6883545757, -0.6870875108, -0.6858183529,-0.6845471059, + -0.6832737737, -0.6819983601, -0.6807208690, -0.6794413043,-0.6781596699, + -0.6768759697, -0.6755902076, -0.6743023876, -0.6730125135,-0.6717205893, + -0.6704266190, -0.6691306064, -0.6678325555, -0.6665324702,-0.6652303547, + -0.6639262127, -0.6626200482, -0.6613118653, -0.6600016680,-0.6586894601, + -0.6573752458, -0.6560590290, -0.6547408137, -0.6534206040,-0.6520984038, + -0.6507742173, -0.6494480483, -0.6481199011, -0.6467897795,-0.6454576877, + -0.6441236298, -0.6427876097, -0.6414496316, -0.6401096995,-0.6387678175, + -0.6374239897, -0.6360782203, -0.6347305132, -0.6333808726,-0.6320293027, + -0.6306758074, -0.6293203910, -0.6279630576, -0.6266038114,-0.6252426563, + -0.6238795967, -0.6225146366, -0.6211477803, -0.6197790318,-0.6184083954, + -0.6170358751, -0.6156614753, -0.6142852001, -0.6129070537,-0.6115270402, + -0.6101451639, -0.6087614290, -0.6073758397, -0.6059884003,-0.6045991149, + -0.6032079877, -0.6018150232, -0.6004202253, -0.5990235985,-0.5976251470, + -0.5962248750, -0.5948227868, -0.5934188866, -0.5920131788,-0.5906056676, + -0.5891963574, -0.5877852523, -0.5863723567, -0.5849576750,-0.5835412114, + -0.5821229702, -0.5807029557, -0.5792811723, -0.5778576244,-0.5764323162, + -0.5750052520, -0.5735764364, -0.5721458734, -0.5707135677,-0.5692795234, + -0.5678437451, -0.5664062369, -0.5649670034, -0.5635260489,-0.5620833779, + -0.5606389946, -0.5591929035, -0.5577451090, -0.5562956155,-0.5548444274, + -0.5533915492, -0.5519369853, -0.5504807401, -0.5490228180,-0.5475632235, + -0.5461019610, -0.5446390350, -0.5431744500, -0.5417082103,-0.5402403205, + -0.5387707850, -0.5372996083, -0.5358267950, -0.5343523494,-0.5328762761, + -0.5313985795, -0.5299192642, -0.5284383347, -0.5269557955,-0.5254716511, + -0.5239859060, -0.5224985647, -0.5210096318, -0.5195191119,-0.5180270094, + -0.5165333289, -0.5150380749, -0.5135412521, -0.5120428649,-0.5105429179, + -0.5090414158, -0.5075383630, -0.5060337641, -0.5045276238,-0.5030199466, + -0.5015107372, -0.5000000000, -0.4984877398, -0.4969739610,-0.4954586684, + -0.4939418666, -0.4924235601, -0.4909037536, -0.4893824517,-0.4878596591, + -0.4863353804, -0.4848096202, -0.4832823833, -0.4817536741,-0.4802234974, + -0.4786918579, -0.4771587603, -0.4756242091, -0.4740882090,-0.4725507649, + -0.4710118812, -0.4694715628, -0.4679298143, -0.4663866403,-0.4648420457, + -0.4632960351, -0.4617486132, -0.4601997848, -0.4586495545,-0.4570979271, + -0.4555449072, -0.4539904997, -0.4524347093, -0.4508775407,-0.4493189986, + -0.4477590878, -0.4461978131, -0.4446351792, -0.4430711908,-0.4415058528, + -0.4399391699, -0.4383711468, -0.4368017884, -0.4352310994,-0.4336590846, + -0.4320857488, -0.4305110968, -0.4289351334, -0.4273578634,-0.4257792916, + -0.4241994227, -0.4226182617, -0.4210358134, -0.4194520824,-0.4178670738, + -0.4162807923, -0.4146932427, -0.4131044298, -0.4115143586,-0.4099230338, + -0.4083304604, -0.4067366431, -0.4051415868, -0.4035452964,-0.4019477767, + -0.4003490326, -0.3987490689, -0.3971478906, -0.3955455026,-0.3939419096, + -0.3923371166, -0.3907311285, -0.3891239501, -0.3875155865,-0.3859060423, + -0.3842953227, -0.3826834324, -0.3810703764, -0.3794561595,-0.3778407868, + -0.3762242631, -0.3746065934, -0.3729877826, -0.3713678356,-0.3697467573, + -0.3681245527, -0.3665012267, -0.3648767843, -0.3632512305,-0.3616245701, + -0.3599968081, -0.3583679495, -0.3567379993, -0.3551069624,-0.3534748438, + -0.3518416484, -0.3502073813, -0.3485720473, -0.3469356516,-0.3452981990, + -0.3436596946, -0.3420201433, -0.3403795502, -0.3387379202,-0.3370952584, + -0.3354515698, -0.3338068592, -0.3321611319, -0.3305143927,-0.3288666467, + -0.3272178990, -0.3255681545, -0.3239174182, -0.3222656952,-0.3206129906, + -0.3189593093, -0.3173046564, -0.3156490369, -0.3139924560,-0.3123349185, + -0.3106764296, -0.3090169944, -0.3073566178, -0.3056953050,-0.3040330609, + -0.3023698908, -0.3007057995, -0.2990407923, -0.2973748741,-0.2957080500, + -0.2940403252, -0.2923717047, -0.2907021936, -0.2890317969,-0.2873605198, + -0.2856883674, -0.2840153447, -0.2823414568, -0.2806667089,-0.2789911060, + -0.2773146533, -0.2756373558, -0.2739592187, -0.2722802470,-0.2706004460, + -0.2689198206, -0.2672383761, -0.2655561175, -0.2638730500,-0.2621891786, + -0.2605045086, -0.2588190451, -0.2571327932, -0.2554457579,-0.2537579446, + -0.2520693582, -0.2503800041, -0.2486898872, -0.2469990127,-0.2453073859, + -0.2436150118, -0.2419218956, -0.2402280425, -0.2385334576,-0.2368381461, + -0.2351421131, -0.2334453639, -0.2317479035, -0.2300497372,-0.2283508701, + -0.2266513074, -0.2249510543, -0.2232501160, -0.2215484976,-0.2198462044, + -0.2181432414, -0.2164396139, -0.2147353272, -0.2130303863,-0.2113247965, + -0.2096185629, -0.2079116908, -0.2062041854, -0.2044960518,-0.2027872954, + -0.2010779211, -0.1993679344, -0.1976573404, -0.1959461442,-0.1942343512, + -0.1925219665, -0.1908089954, -0.1890954430, -0.1873813146,-0.1856666154, + -0.1839513506, -0.1822355255, -0.1805191453, -0.1788022151,-0.1770847403, + -0.1753667261, -0.1736481777, -0.1719291003, -0.1702094992,-0.1684893796, + -0.1667687467, -0.1650476059, -0.1633259622, -0.1616038211,-0.1598811877, + -0.1581580673, -0.1564344650, -0.1547103863, -0.1529858363,-0.1512608202, + -0.1495353434, -0.1478094111, -0.1460830286, -0.1443562010,-0.1426289337, + -0.1409012319, -0.1391731010, -0.1374445460, -0.1357155724,-0.1339861854, + -0.1322563903, -0.1305261922, -0.1287955966, -0.1270646086,-0.1253332336, + -0.1236014767, -0.1218693434, -0.1201368388, -0.1184039683,-0.1166707371, + -0.1149371505, -0.1132032138, -0.1114689322, -0.1097343111,-0.1079993557, + -0.1062640713, -0.1045284633, -0.1027925368, -0.1010562972,-0.0993197497, + -0.0975828998, -0.0958457525, -0.0941083133, -0.0923705874,-0.0906325802, + -0.0888942969, -0.0871557427, -0.0854169231, -0.0836778433,-0.0819385086, + -0.0801989243, -0.0784590957, -0.0767190281, -0.0749787268,-0.0732381971, + -0.0714974443, -0.0697564737, -0.0680152907, -0.0662739004,-0.0645323083, + -0.0627905195, -0.0610485395, -0.0593063736, -0.0575640270,-0.0558215050, + -0.0540788130, -0.0523359562, -0.0505929401, -0.0488497698,-0.0471064507, + -0.0453629881, -0.0436193874, -0.0418756537, -0.0401317925,-0.0383878091, + -0.0366437087, -0.0348994967, -0.0331551784, -0.0314107591,-0.0296662441, + -0.0279216387, -0.0261769483, -0.0244321782, -0.0226873336,-0.0209424199, + -0.0191974424, -0.0174524064, -0.0157073173, -0.0139621803,-0.0122170008, + -0.0104717841, -0.0087265355, -0.0069812603, -0.0052359638,-0.0034906514, + -0.0017453284, -0.0000000000, 0.0017453284, 0.0034906514, 0.0052359638, + 0.0069812603, 0.0087265355, 0.0104717841, 0.0122170008, 0.0139621803, + 0.0157073173, 0.0174524064, 0.0191974424, 0.0209424199, 0.0226873336, + 0.0244321782, 0.0261769483, 0.0279216387, 0.0296662441, 0.0314107591, + 0.0331551784, 0.0348994967, 0.0366437087, 0.0383878091, 0.0401317925, + 0.0418756537, 0.0436193874, 0.0453629881, 0.0471064507, 0.0488497698, + 0.0505929401, 0.0523359562, 0.0540788130, 0.0558215050, 0.0575640270, + 0.0593063736, 0.0610485395, 0.0627905195, 0.0645323083, 0.0662739004, + 0.0680152907, 0.0697564737, 0.0714974443, 0.0732381971, 0.0749787268, + 0.0767190281, 0.0784590957, 0.0801989243, 0.0819385086, 0.0836778433, + 0.0854169231, 0.0871557427, 0.0888942969, 0.0906325802, 0.0923705874, + 0.0941083133, 0.0958457525, 0.0975828998, 0.0993197497, 0.1010562972, + 0.1027925368, 0.1045284633, 0.1062640713, 0.1079993557, 0.1097343111, + 0.1114689322, 0.1132032138, 0.1149371505, 0.1166707371, 0.1184039683, + 0.1201368388, 0.1218693434, 0.1236014767, 0.1253332336, 0.1270646086, + 0.1287955966, 0.1305261922, 0.1322563903, 0.1339861854, 0.1357155724, + 0.1374445460, 0.1391731010, 0.1409012319, 0.1426289337, 0.1443562010, + 0.1460830286, 0.1478094111, 0.1495353434, 0.1512608202, 0.1529858363, + 0.1547103863, 0.1564344650, 0.1581580673, 0.1598811877, 0.1616038211, + 0.1633259622, 0.1650476059, 0.1667687467, 0.1684893796, 0.1702094992, + 0.1719291003, 0.1736481777, 0.1753667261, 0.1770847403, 0.1788022151, + 0.1805191453, 0.1822355255, 0.1839513506, 0.1856666154, 0.1873813146, + 0.1890954430, 0.1908089954, 0.1925219665, 0.1942343512, 0.1959461442, + 0.1976573404, 0.1993679344, 0.2010779211, 0.2027872954, 0.2044960518, + 0.2062041854, 0.2079116908, 0.2096185629, 0.2113247965, 0.2130303863, + 0.2147353272, 0.2164396139, 0.2181432414, 0.2198462044, 0.2215484976, + 0.2232501160, 0.2249510543, 0.2266513074, 0.2283508701, 0.2300497372, + 0.2317479035, 0.2334453639, 0.2351421131, 0.2368381461, 0.2385334576, + 0.2402280425, 0.2419218956, 0.2436150118, 0.2453073859, 0.2469990127, + 0.2486898872, 0.2503800041, 0.2520693582, 0.2537579446, 0.2554457579, + 0.2571327932, 0.2588190451, 0.2605045086, 0.2621891786, 0.2638730500, + 0.2655561175, 0.2672383761, 0.2689198206, 0.2706004460, 0.2722802470, + 0.2739592187, 0.2756373558, 0.2773146533, 0.2789911060, 0.2806667089, + 0.2823414568, 0.2840153447, 0.2856883674, 0.2873605198, 0.2890317969, + 0.2907021936, 0.2923717047, 0.2940403252, 0.2957080500, 0.2973748741, + 0.2990407923, 0.3007057995, 0.3023698908, 0.3040330609, 0.3056953050, + 0.3073566178, 0.3090169944, 0.3106764296, 0.3123349185, 0.3139924560, + 0.3156490369, 0.3173046564, 0.3189593093, 0.3206129906, 0.3222656952, + 0.3239174182, 0.3255681545, 0.3272178990, 0.3288666467, 0.3305143927, + 0.3321611319, 0.3338068592, 0.3354515698, 0.3370952584, 0.3387379202, + 0.3403795502, 0.3420201433, 0.3436596946, 0.3452981990, 0.3469356516, + 0.3485720473, 0.3502073813, 0.3518416484, 0.3534748438, 0.3551069624, + 0.3567379993, 0.3583679495, 0.3599968081, 0.3616245701, 0.3632512305, + 0.3648767843, 0.3665012267, 0.3681245527, 0.3697467573, 0.3713678356, + 0.3729877826, 0.3746065934, 0.3762242631, 0.3778407868, 0.3794561595, + 0.3810703764, 0.3826834324, 0.3842953227, 0.3859060423, 0.3875155865, + 0.3891239501, 0.3907311285, 0.3923371166, 0.3939419096, 0.3955455026, + 0.3971478906, 0.3987490689, 0.4003490326, 0.4019477767, 0.4035452964, + 0.4051415868, 0.4067366431, 0.4083304604, 0.4099230338, 0.4115143586, + 0.4131044298, 0.4146932427, 0.4162807923, 0.4178670738, 0.4194520824, + 0.4210358134, 0.4226182617, 0.4241994227, 0.4257792916, 0.4273578634, + 0.4289351334, 0.4305110968, 0.4320857488, 0.4336590846, 0.4352310994, + 0.4368017884, 0.4383711468, 0.4399391699, 0.4415058528, 0.4430711908, + 0.4446351792, 0.4461978131, 0.4477590878, 0.4493189986, 0.4508775407, + 0.4524347093, 0.4539904997, 0.4555449072, 0.4570979271, 0.4586495545, + 0.4601997848, 0.4617486132, 0.4632960351, 0.4648420457, 0.4663866403, + 0.4679298143, 0.4694715628, 0.4710118812, 0.4725507649, 0.4740882090, + 0.4756242091, 0.4771587603, 0.4786918579, 0.4802234974, 0.4817536741, + 0.4832823833, 0.4848096202, 0.4863353804, 0.4878596591, 0.4893824517, + 0.4909037536, 0.4924235601, 0.4939418666, 0.4954586684, 0.4969739610, + 0.4984877398, 0.5000000000, 0.5015107372, 0.5030199466, 0.5045276238, + 0.5060337641, 0.5075383630, 0.5090414158, 0.5105429179, 0.5120428649, + 0.5135412521, 0.5150380749, 0.5165333289, 0.5180270094, 0.5195191119, + 0.5210096318, 0.5224985647, 0.5239859060, 0.5254716511, 0.5269557955, + 0.5284383347, 0.5299192642, 0.5313985795, 0.5328762761, 0.5343523494, + 0.5358267950, 0.5372996083, 0.5387707850, 0.5402403205, 0.5417082103, + 0.5431744500, 0.5446390350, 0.5461019610, 0.5475632235, 0.5490228180, + 0.5504807401, 0.5519369853, 0.5533915492, 0.5548444274, 0.5562956155, + 0.5577451090, 0.5591929035, 0.5606389946, 0.5620833779, 0.5635260489, + 0.5649670034, 0.5664062369, 0.5678437451, 0.5692795234, 0.5707135677, + 0.5721458734, 0.5735764364, 0.5750052520, 0.5764323162, 0.5778576244, + 0.5792811723, 0.5807029557, 0.5821229702, 0.5835412114, 0.5849576750, + 0.5863723567, 0.5877852523, 0.5891963574, 0.5906056676, 0.5920131788, + 0.5934188866, 0.5948227868, 0.5962248750, 0.5976251470, 0.5990235985, + 0.6004202253, 0.6018150232, 0.6032079877, 0.6045991149, 0.6059884003, + 0.6073758397, 0.6087614290, 0.6101451639, 0.6115270402, 0.6129070537, + 0.6142852001, 0.6156614753, 0.6170358751, 0.6184083954, 0.6197790318, + 0.6211477803, 0.6225146366, 0.6238795967, 0.6252426563, 0.6266038114, + 0.6279630576, 0.6293203910, 0.6306758074, 0.6320293027, 0.6333808726, + 0.6347305132, 0.6360782203, 0.6374239897, 0.6387678175, 0.6401096995, + 0.6414496316, 0.6427876097, 0.6441236298, 0.6454576877, 0.6467897795, + 0.6481199011, 0.6494480483, 0.6507742173, 0.6520984038, 0.6534206040, + 0.6547408137, 0.6560590290, 0.6573752458, 0.6586894601, 0.6600016680, + 0.6613118653, 0.6626200482, 0.6639262127, 0.6652303547, 0.6665324702, + 0.6678325555, 0.6691306064, 0.6704266190, 0.6717205893, 0.6730125135, + 0.6743023876, 0.6755902076, 0.6768759697, 0.6781596699, 0.6794413043, + 0.6807208690, 0.6819983601, 0.6832737737, 0.6845471059, 0.6858183529, + 0.6870875108, 0.6883545757, 0.6896195437, 0.6908824111, 0.6921431739, + 0.6934018283, 0.6946583705, 0.6959127966, 0.6971651029, 0.6984152854, + 0.6996633405, 0.7009092643, 0.7021530530, 0.7033947028, 0.7046342100, + 0.7058715707, 0.7071067812, 0.7083398377, 0.7095707365, 0.7107994739, + 0.7120260460, 0.7132504492, 0.7144726796, 0.7156927337, 0.7169106077, + 0.7181262978, 0.7193398003, 0.7205511117, 0.7217602281, 0.7229671459, + 0.7241718614, 0.7253743710, 0.7265746710, 0.7277727577, 0.7289686274, + 0.7301622766, 0.7313537016, 0.7325428988, 0.7337298645, 0.7349145951, + 0.7360970871, 0.7372773368, 0.7384553406, 0.7396310950, 0.7408045963, + 0.7419758410, 0.7431448255, 0.7443115462, 0.7454759997, 0.7466381823, + 0.7477980905, 0.7489557208, 0.7501110696, 0.7512641335, 0.7524149089, + 0.7535633923, 0.7547095802, 0.7558534692, 0.7569950557, 0.7581343362, + 0.7592713073, 0.7604059656, 0.7615383075, 0.7626683297, 0.7637960286, + 0.7649214009, 0.7660444431, 0.7671651518, 0.7682835236, 0.7693995550, + 0.7705132428, 0.7716245834, 0.7727335735, 0.7738402097, 0.7749444887, + 0.7760464071, 0.7771459615, 0.7782431485, 0.7793379649, 0.7804304073, + 0.7815204724, 0.7826081569, 0.7836934573, 0.7847763705, 0.7858568932, + 0.7869350220, 0.7880107536, 0.7890840848, 0.7901550124, 0.7912235330, + 0.7922896434, 0.7933533403, 0.7944146205, 0.7954734809, 0.7965299180, + 0.7975839288, 0.7986355100, 0.7996846585, 0.8007313709, 0.8017756442, + 0.8028174752, 0.8038568606, 0.8048937974, 0.8059282822, 0.8069603121, + 0.8079898839, 0.8090169944, 0.8100416404, 0.8110638190, 0.8120835269, + 0.8131007610, 0.8141155184, 0.8151277957, 0.8161375901, 0.8171448983, + 0.8181497174, 0.8191520443, 0.8201518759, 0.8211492091, 0.8221440410, + 0.8231363685, 0.8241261886, 0.8251134983, 0.8260982945, 0.8270805743, + 0.8280603346, 0.8290375726, 0.8300122851, 0.8309844693, 0.8319541221, + 0.8329212407, 0.8338858221, 0.8348478633, 0.8358073614, 0.8367643135, + 0.8377187166, 0.8386705679, 0.8396198645, 0.8405666035, 0.8415107819, + 0.8424523970, 0.8433914458, 0.8443279255, 0.8452618332, 0.8461931661, + 0.8471219214, 0.8480480962, 0.8489716876, 0.8498926930, 0.8508111094, + 0.8517269341, 0.8526401644, 0.8535507973, 0.8544588301, 0.8553642602, + 0.8562670846, 0.8571673007, 0.8580649057, 0.8589598969, 0.8598522716, + 0.8607420270, 0.8616291604, 0.8625136692, 0.8633955506, 0.8642748020, + 0.8651514206, 0.8660254038, 0.8668967489, 0.8677654534, 0.8686315144, + 0.8694949295, 0.8703556959, 0.8712138111, 0.8720692724, 0.8729220773, + 0.8737722230, 0.8746197071, 0.8754645270, 0.8763066800, 0.8771461637, + 0.8779829754, 0.8788171127, 0.8796485729, 0.8804773535, 0.8813034521, + 0.8821268660, 0.8829475929, 0.8837656301, 0.8845809752, 0.8853936258, + 0.8862035792, 0.8870108332, 0.8878153851, 0.8886172327, 0.8894163733, + 0.8902128046, 0.8910065242, 0.8917975296, 0.8925858185, 0.8933713883, + 0.8941542368, 0.8949343616, 0.8957117602, 0.8964864304, 0.8972583697, + 0.8980275758, 0.8987940463, 0.8995577790, 0.9003187714, 0.9010770213, + 0.9018325264, 0.9025852843, 0.9033352929, 0.9040825497, 0.9048270525, + 0.9055687990, 0.9063077870, 0.9070440143, 0.9077774785, 0.9085081775, + 0.9092361090, 0.9099612709, 0.9106836608, 0.9114032766, 0.9121201162, + 0.9128341772, 0.9135454576, 0.9142539552, 0.9149596678, 0.9156625933, + 0.9163627296, 0.9170600744, 0.9177546257, 0.9184463813, 0.9191353393, + 0.9198214973, 0.9205048535, 0.9211854056, 0.9218631516, 0.9225380895, + 0.9232102171, 0.9238795325, 0.9245460336, 0.9252097184, 0.9258705848, + 0.9265286309, 0.9271838546, 0.9278362539, 0.9284858269, 0.9291325715, + 0.9297764859, 0.9304175680, 0.9310558159, 0.9316912276, 0.9323238012, + 0.9329535348, 0.9335804265, 0.9342044743, 0.9348256764, 0.9354440308, + 0.9360595357, 0.9366721892, 0.9372819895, 0.9378889346, 0.9384930228, + 0.9390942521, 0.9396926208, 0.9402881270, 0.9408807690, 0.9414705448, + 0.9420574528, 0.9426414911, 0.9432226579, 0.9438009516, 0.9443763702, + 0.9449489122, 0.9455185756, 0.9460853588, 0.9466492601, 0.9472102777, + 0.9477684100, 0.9483236552, 0.9488760116, 0.9494254776, 0.9499720515, + 0.9505157316, 0.9510565163, 0.9515944039, 0.9521293927, 0.9526614813, + 0.9531906678, 0.9537169507, 0.9542403285, 0.9547607995, 0.9552783621, + 0.9557930148, 0.9563047560, 0.9568135841, 0.9573194975, 0.9578224948, + 0.9583225745, 0.9588197349, 0.9593139745, 0.9598052920, 0.9602936857, + 0.9607791542, 0.9612616959, 0.9617413095, 0.9622179935, 0.9626917464, + 0.9631625668, 0.9636304532, 0.9640954042, 0.9645574185, 0.9650164945, + 0.9654726309, 0.9659258263, 0.9663760793, 0.9668233886, 0.9672677528, + 0.9677091705, 0.9681476404, 0.9685831611, 0.9690157314, 0.9694453499, + 0.9698720153, 0.9702957263, 0.9707164816, 0.9711342799, 0.9715491200, + 0.9719610006, 0.9723699204, 0.9727758782, 0.9731788728, 0.9735789029, + 0.9739759673, 0.9743700648, 0.9747611942, 0.9751493543, 0.9755345439, + 0.9759167619, 0.9762960071, 0.9766722783, 0.9770455744, 0.9774158943, + 0.9777832368, 0.9781476007, 0.9785089851, 0.9788673888, 0.9792228106, + 0.9795752496, 0.9799247046, 0.9802711746, 0.9806146585, 0.9809551553, + 0.9812926640, 0.9816271834, 0.9819587127, 0.9822872507, 0.9826127965, + 0.9829353491, 0.9832549076, 0.9835714708, 0.9838850379, 0.9841956080, + 0.9845031800, 0.9848077530, 0.9851093262, 0.9854078985, 0.9857034691, + 0.9859960371, 0.9862856015, 0.9865721616, 0.9868557164, 0.9871362651, + 0.9874138068, 0.9876883406, 0.9879598658, 0.9882283814, 0.9884938868, + 0.9887563810, 0.9890158634, 0.9892723330, 0.9895257891, 0.9897762309, + 0.9900236577, 0.9902680687, 0.9905094632, 0.9907478405, 0.9909831997, + 0.9912155403, 0.9914448614, 0.9916711624, 0.9918944426, 0.9921147013, + 0.9923319379, 0.9925461516, 0.9927573419, 0.9929655081, 0.9931706495, + 0.9933727656, 0.9935718557, 0.9937679192, 0.9939609555, 0.9941509640, + 0.9943379441, 0.9945218954, 0.9947028171, 0.9948807088, 0.9950555700, + 0.9952274000, 0.9953961984, 0.9955619646, 0.9957246982, 0.9958843986, + 0.9960410654, 0.9961946981, 0.9963452962, 0.9964928592, 0.9966373868, + 0.9967788785, 0.9969173337, 0.9970527522, 0.9971851335, 0.9973144772, + 0.9974407829, 0.9975640503, 0.9976842788, 0.9978014683, 0.9979156183, + 0.9980267284, 0.9981347984, 0.9982398279, 0.9983418166, 0.9984407642, + 0.9985366703, 0.9986295348, 0.9987193572, 0.9988061373, 0.9988898750, + 0.9989705698, 0.9990482216, 0.9991228301, 0.9991943951, 0.9992629164, + 0.9993283938, 0.9993908270, 0.9994502159, 0.9995065604, 0.9995598601, + 0.9996101150, 0.9996573250, 0.9997014898, 0.9997426093, 0.9997806835, + 0.9998157121, 0.9998476952, 0.9998766325, 0.9999025240, 0.9999253697, + 0.9999451694, 0.9999619231, 0.9999756307, 0.9999862922, 0.9999939077, 0.9999984769 }; diff --git a/eeschema/block.cpp b/eeschema/block.cpp index b8c25a8c75..b5af40e1c5 100644 --- a/eeschema/block.cpp +++ b/eeschema/block.cpp @@ -514,6 +514,10 @@ void SaveStructListForPaste( PICKED_ITEMS_LIST& aItemsList ) /* save the new list: */ ITEM_PICKER item; + // In list the wrapper is owner of the shematic item, we can use the UR_DELETED + // status for the picker because pickers with this status are owner of the picked item + // (or TODO ?: create a new status like UR_DUPLICATE) + item.m_UndoRedoStatus = UR_DELETED; for( unsigned ii = 0; ii < aItemsList.GetCount(); ii++ ) { /* Make a copy of the original picked item. */ diff --git a/eeschema/classes_body_items.cpp b/eeschema/classes_body_items.cpp index 6abbb50cc1..db031a45e2 100644 --- a/eeschema/classes_body_items.cpp +++ b/eeschema/classes_body_items.cpp @@ -17,7 +17,6 @@ #include "protos.h" #include "classes_body_items.h" - static int fill_tab[3] = { 'N', 'F', 'f' }; //#define DRAW_ARC_WITH_ANGLE // Used to draw arcs @@ -231,13 +230,12 @@ bool LIB_ARC::HitTest( const wxPoint& aRefPoint ) int mindist = m_Width ? m_Width / 2 : g_DrawDefaultLineThickness / 2; // Have a minimal tolerance for hit test - if( mindist < 3 ) - mindist = 3; // = 3 mils + if( mindist < MINIMUM_SELECTION_DISTANCE ) + mindist = MINIMUM_SELECTION_DISTANCE; return HitTest( aRefPoint, mindist, DefaultTransformMatrix ); } - /** Function HitTest * @return true if the point aPosRef is near this object * @param aRefPoint = a wxPoint to test @@ -245,38 +243,45 @@ bool LIB_ARC::HitTest( const wxPoint& aRefPoint ) * of a line) * @param aTransMat = the transform matrix */ -bool LIB_ARC::HitTest( wxPoint aRefPoint, int aThreshold, - const int aTransMat[2][2] ) +bool LIB_ARC::HitTest( wxPoint aReferencePoint, int aThreshold, + const int aTransformationMatrix[2][2] ) { + // TODO: use aTransMat to calculmates parameters - wxPoint relpos = aRefPoint; + wxPoint relativePosition = aReferencePoint; - NEGATE( relpos.y ); // reverse Y axis + NEGATE( relativePosition.y ); // reverse Y axis - relpos -= m_Pos; - int dist = wxRound( sqrt( ( (double) relpos.x * (double) relpos.x ) + - ( (double) relpos.y * (double) relpos.y ) ) ); + int distance = wxRound( EuclideanNorm(TwoPointVector(m_Pos, relativePosition) ) ); - if( abs( dist - m_Radius ) > aThreshold ) + if( abs( distance - m_Radius ) > aThreshold ) return false; // We are on the circle, ensure we are only on the arc, i.e. between // m_ArcStart and m_ArcEnd - int astart = m_t1; // arc starting point ( in 0.1 degree) - int aend = m_t2; // arc ending point ( in 0.1 degree) - int atest = wxRound( atan2( (double) relpos.y, - (double) relpos.x ) * 1800.0 / M_PI ); - NORMALIZE_ANGLE_180( atest ); - NORMALIZE_ANGLE_180( astart ); - NORMALIZE_ANGLE_180( aend ); - if( astart > aend ) - EXCHG( astart, aend ); + wxPoint startEndVector = TwoPointVector( m_ArcStart, m_ArcEnd); + wxPoint startRelativePositionVector = TwoPointVector( m_ArcStart, relativePosition); - if( atest >= astart && atest <= aend ) - return true; + wxPoint centerStartVector = TwoPointVector( m_Pos, m_ArcStart); + wxPoint centerEndVector = TwoPointVector( m_Pos, m_ArcEnd); + wxPoint centerRelativePositionVector = TwoPointVector( m_Pos, relativePosition); - return false; + // Compute the cross product to check if the point is in the sector + int crossProductStart = CrossProduct(centerStartVector, centerRelativePositionVector); + int crossProductEnd = CrossProduct(centerEndVector, centerRelativePositionVector); + + // The cross products need to be exchanged, depending on which side the center point + // relative to the start point to end point vector lies + if (CrossProduct(startEndVector, startRelativePositionVector) < 0 ){ + EXCHG(crossProductStart, crossProductEnd); + } + + // When the cross products have a different sign, the point lies in sector + // also check, if the reference is near start or end point + return HitTestPoints(m_ArcStart, relativePosition, MINIMUM_SELECTION_DISTANCE) || + HitTestPoints(m_ArcEnd, relativePosition, MINIMUM_SELECTION_DISTANCE) || + (crossProductStart <= 0 && crossProductEnd >= 0); } @@ -603,8 +608,8 @@ bool LIB_CIRCLE::HitTest( const wxPoint& aPosRef ) int mindist = m_Width ? m_Width / 2 : g_DrawDefaultLineThickness / 2; // Have a minimal tolerance for hit test - if( mindist < 3 ) - mindist = 3; // = 3 mils + if( mindist < MINIMUM_SELECTION_DISTANCE ) + mindist = MINIMUM_SELECTION_DISTANCE; return HitTest( aPosRef, mindist, DefaultTransformMatrix ); } @@ -811,6 +816,9 @@ LIB_RECTANGLE::LIB_RECTANGLE( LIB_COMPONENT* aParent ) : m_Fill = NO_FILL; m_isFillable = true; m_typeName = _( "Rectangle" ); + m_isHeightLocked = false; + m_isWidthLocked = false; + m_isStartPointSelected = false; } @@ -1037,8 +1045,8 @@ bool LIB_RECTANGLE::HitTest( const wxPoint& aRefPoint ) int mindist = (m_Width ? m_Width / 2 : g_DrawDefaultLineThickness / 2) + 1; // Have a minimal tolerance for hit test - if( mindist < 3 ) - mindist = 3; // = 3 mils + if( mindist < MINIMUM_SELECTION_DISTANCE ) + mindist = MINIMUM_SELECTION_DISTANCE; return HitTest( aRefPoint, mindist, DefaultTransformMatrix ); } @@ -1079,8 +1087,9 @@ bool LIB_RECTANGLE::HitTest( wxPoint aRefPoint, int aThreshold, return true; // locate left segment - start.x = actualStart.x; - end.x = actualStart.y; + start = actualStart; + end.x = actualStart.x; + end.y = actualEnd.y; if( TestSegmentHit( aRefPoint, start, end, aThreshold ) ) return true; @@ -1282,8 +1291,8 @@ bool LIB_SEGMENT::HitTest( const wxPoint& aPosRef ) int mindist = m_Width ? m_Width / 2 : g_DrawDefaultLineThickness / 2; // Have a minimal tolerance for hit test - if( mindist < 3 ) - mindist = 3; // = 3 mils + if( mindist < MINIMUM_SELECTION_DISTANCE ) + mindist = MINIMUM_SELECTION_DISTANCE; return HitTest( aPosRef, mindist, DefaultTransformMatrix ); } @@ -1613,8 +1622,8 @@ bool LIB_POLYLINE::HitTest( const wxPoint& aRefPos ) int mindist = m_Width ? m_Width / 2 : g_DrawDefaultLineThickness / 2; // Have a minimal tolerance for hit test - if( mindist < 3 ) - mindist = 3; // = 3 mils + if( mindist < MINIMUM_SELECTION_DISTANCE ) + mindist = MINIMUM_SELECTION_DISTANCE; return HitTest( aRefPos, mindist, DefaultTransformMatrix ); } @@ -1980,8 +1989,8 @@ bool LIB_BEZIER::HitTest( const wxPoint& aRefPos ) { int mindist = m_Width ? m_Width /2 : g_DrawDefaultLineThickness / 2; // Have a minimal tolerance for hit test - if ( mindist < 3 ) - mindist = 3; // = 3 mils + if ( mindist < MINIMUM_SELECTION_DISTANCE ) + mindist = MINIMUM_SELECTION_DISTANCE; return HitTest( aRefPos, mindist, DefaultTransformMatrix ); } diff --git a/eeschema/classes_body_items.h b/eeschema/classes_body_items.h index 7fe05fd308..a9f0d50576 100644 --- a/eeschema/classes_body_items.h +++ b/eeschema/classes_body_items.h @@ -32,7 +32,7 @@ class LIB_PIN; #define CLOCK_PIN_DIM 40 /* Dim of clock pin symbol. */ #define IEEE_SYMBOL_PIN_DIM 40 /* Dim of special pin symbol. */ - +#define MINIMUM_SELECTION_DISTANCE 15 // Minimum selection distance in mils /** * The component library pin object electrical types used in ERC tests. @@ -978,6 +978,9 @@ public: wxPoint m_End; /* Rectangle end point. */ wxPoint m_Pos; /* Rectangle start point. */ int m_Width; /* Line width */ + bool m_isWidthLocked; /* Flag: Keep width locked */ + bool m_isHeightLocked; /* Flag: Keep height locked */ + bool m_isStartPointSelected; /* Flag: is the upper left edge selected ? */ public: LIB_RECTANGLE(LIB_COMPONENT * aParent); @@ -1146,6 +1149,7 @@ class LIB_POLYLINE : public LIB_DRAW_ITEM public: int m_Width; /* Line width */ std::vector m_PolyPoints; // list of points (>= 2) + int m_ModifyIndex; // Index of the polyline point to modify public: LIB_POLYLINE(LIB_COMPONENT * aParent); diff --git a/eeschema/eeschema_id.h b/eeschema/eeschema_id.h index bcf720fd6d..345384f051 100644 --- a/eeschema/eeschema_id.h +++ b/eeschema/eeschema_id.h @@ -1,195 +1,196 @@ -#ifndef __EESCHEMA_ID_H__ -#define __EESCHEMA_ID_H__ - - -#include "id.h" - -/** - * Command IDs for the schematic editor. - * - * Please add IDs that are unique to the schematic editor (EESchema) here and - * not in the global id.h file. This will prevent the entire project from - * being rebuilt when adding new command to EESchema. - */ - -enum id_eeschema_frm -{ - /* Schematic editor horizontal toolbar IDs */ - ID_HIERARCHY = ID_END_LIST, - ID_TO_LIBVIEW, - ID_GET_ANNOTATE, - ID_GET_ERC, - ID_BACKANNO_ITEMS, - - /* Schematic editor veritcal toolbar IDs */ - ID_SCHEMATIC_VERTICAL_TOOLBAR_START, - ID_HIERARCHY_PUSH_POP_BUTT, - ID_PLACE_POWER_BUTT, - ID_BUS_BUTT, - ID_WIRE_BUTT, - ID_BUSTOBUS_ENTRY_BUTT, - ID_WIRETOBUS_ENTRY_BUTT, - ID_LABEL_BUTT, - ID_GLABEL_BUTT, - ID_HIERLABEL_BUTT, - ID_IMPORT_HLABEL_BUTT, - ID_SHEET_LABEL_BUTT, - ID_NOCONN_BUTT, - ID_JUNCTION_BUTT, - ID_SHEET_SYMBOL_BUTT, - ID_TEXT_COMMENT_BUTT, - ID_LINE_COMMENT_BUTT, - ID_SCHEMATIC_DELETE_ITEM_BUTT, - ID_SCHEMATIC_VERTICAL_TOOLBAR_END, - - /* Schematic editor context menu IDs. */ - ID_POPUP_SCH_COPY_ITEM, - - ID_POPUP_START_RANGE, - ID_POPUP_SCH_DELETE, - ID_POPUP_SCH_BREAK_WIRE, - ID_POPUP_SCH_DELETE_CONNECTION, - ID_POPUP_SCH_MOVE_ITEM_REQUEST, - ID_POPUP_SCH_DELETE_NODE, - ID_POPUP_SCH_MOVE_CMP_REQUEST, - ID_POPUP_SCH_DELETE_CMP, - ID_POPUP_SCH_DRAG_CMP_REQUEST, - ID_POPUP_SCH_DRAG_WIRE_REQUEST, - ID_POPUP_SCH_UNUSED_2, - ID_POPUP_SCH_ENTRY_SELECT_SLASH, - ID_POPUP_SCH_ENTRY_SELECT_ANTISLASH, - - ID_POPUP_SCH_EDIT_CMP, - ID_POPUP_SCH_MIROR_X_CMP, - ID_POPUP_SCH_MIROR_Y_CMP, - ID_POPUP_SCH_ROTATE_CMP_CLOCKWISE, - ID_POPUP_SCH_ROTATE_CMP_COUNTERCLOCKWISE, - ID_POPUP_SCH_ORIENT_NORMAL_CMP, - ID_POPUP_SCH_INIT_CMP, - - ID_POPUP_SCH_EDIT_TEXT, - ID_POPUP_SCH_ROTATE_TEXT, - ID_POPUP_SCH_SET_SHAPE_TEXT, - ID_POPUP_END_LINE, - ID_POPUP_SCH_END_SHEET, - ID_POPUP_SCH_EDIT_SHEET, - ID_POPUP_SCH_RESIZE_SHEET, - ID_POPUP_SCH_CLEANUP_SHEET, - ID_POPUP_SCH_EDIT_PINSHEET, - ID_POPUP_SCH_MOVE_PINSHEET, - ID_POPUP_IMPORT_GLABEL, - ID_POPUP_SCH_GENERIC_ORIENT_CMP, - ID_POPUP_SCH_GENERIC_EDIT_CMP, - ID_POPUP_SCH_EDIT_VALUE_CMP, - ID_POPUP_SCH_EDIT_REF_CMP, - ID_POPUP_SCH_EDIT_FOOTPRINT_CMP, - ID_POPUP_SCH_EDIT_CONVERT_CMP, - ID_POPUP_SCH_SELECT_UNIT_CMP, - ID_POPUP_SCH_SELECT_UNIT1, - ID_POPUP_SCH_SELECT_UNIT2, - ID_POPUP_SCH_SELECT_UNIT3, - ID_POPUP_SCH_SELECT_UNIT4, - ID_POPUP_SCH_SELECT_UNIT5, - ID_POPUP_SCH_SELECT_UNIT6, - ID_POPUP_SCH_SELECT_UNIT7, - ID_POPUP_SCH_SELECT_UNIT8, - ID_POPUP_SCH_SELECT_UNIT9, - ID_POPUP_SCH_SELECT_UNIT10, - ID_POPUP_SCH_SELECT_UNIT11, - ID_POPUP_SCH_SELECT_UNIT12, - ID_POPUP_SCH_SELECT_UNIT13, - ID_POPUP_SCH_SELECT_UNIT14, - ID_POPUP_SCH_SELECT_UNIT15, - ID_POPUP_SCH_SELECT_UNIT16, - ID_POPUP_SCH_SELECT_UNIT17, - ID_POPUP_SCH_SELECT_UNIT18, - ID_POPUP_SCH_SELECT_UNIT19, - ID_POPUP_SCH_SELECT_UNIT20, - ID_POPUP_SCH_SELECT_UNIT21, - ID_POPUP_SCH_SELECT_UNIT22, - ID_POPUP_SCH_SELECT_UNIT23, - ID_POPUP_SCH_SELECT_UNIT24, - ID_POPUP_SCH_SELECT_UNIT25, - ID_POPUP_SCH_SELECT_UNIT26, - ID_POPUP_SCH_ROTATE_FIELD, - ID_POPUP_SCH_EDIT_FIELD, - ID_POPUP_SCH_CHANGE_TYPE_TEXT, - ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_LABEL, - ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_GLABEL, - ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_COMMENT, - ID_POPUP_SCH_DISPLAYDOC_CMP, - ID_POPUP_SCH_ENTER_SHEET, - ID_POPUP_SCH_LEAVE_SHEET, - ID_POPUP_SCH_ADD_JUNCTION, - ID_POPUP_SCH_ADD_LABEL, - ID_POPUP_SCH_ADD_GLABEL, - ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_HLABEL, - ID_POPUP_SCH_GETINFO_MARKER, - ID_POPUP_END_RANGE, - - /* Library editor horizontal toolbar IDs. */ - ID_LIBEDIT_SELECT_PART, - ID_LIBEDIT_SELECT_CURRENT_LIB, - ID_LIBEDIT_SAVE_CURRENT_LIB, - ID_LIBEDIT_SAVE_CURRENT_PART, - ID_LIBEDIT_NEW_PART, - ID_LIBEDIT_GET_FRAME_EDIT_PART, - ID_LIBEDIT_GET_FRAME_EDIT_FIELDS, - ID_LIBEDIT_DELETE_PART, - ID_DE_MORGAN_NORMAL_BUTT, - ID_DE_MORGAN_CONVERT_BUTT, - ID_LIBEDIT_EDIT_PIN_BY_PIN, - ID_LIBEDIT_VIEW_DOC, - ID_LIBEDIT_CHECK_PART, - - ID_LIBEDIT_SELECT_PART_NUMBER, - ID_LIBEDIT_SELECT_ALIAS, - - /* Library editor vertical toolbar IDs. */ - ID_LIBEDIT_PIN_BUTT, - ID_LIBEDIT_BODY_LINE_BUTT, - ID_LIBEDIT_BODY_ARC_BUTT, - ID_LIBEDIT_BODY_CIRCLE_BUTT, - ID_LIBEDIT_BODY_RECT_BUTT, - ID_LIBEDIT_BODY_TEXT_BUTT, - ID_LIBEDIT_DELETE_ITEM_BUTT, - ID_LIBEDIT_ANCHOR_ITEM_BUTT, - ID_LIBEDIT_IMPORT_BODY_BUTT, - ID_LIBEDIT_EXPORT_BODY_BUTT, - - /* Library editor context menu IDs */ - ID_LIBEDIT_EDIT_PIN, - ID_LIBEDIT_ROTATE_PIN, - ID_POPUP_LIBEDIT_PIN_GLOBAL_CHANGE_ITEM, - ID_POPUP_LIBEDIT_PIN_GLOBAL_CHANGE_PINSIZE_ITEM, - ID_POPUP_LIBEDIT_PIN_GLOBAL_CHANGE_PINNAMESIZE_ITEM, - ID_POPUP_LIBEDIT_PIN_GLOBAL_CHANGE_PINNUMSIZE_ITEM, - ID_POPUP_LIBEDIT_BODY_EDIT_ITEM, - ID_POPUP_LIBEDIT_DELETE_ITEM, - ID_POPUP_LIBEDIT_END_CREATE_ITEM, - ID_POPUP_LIBEDIT_CANCEL_EDITING, - ID_POPUP_LIBEDIT_MOVE_ITEM_REQUEST, - ID_POPUP_LIBEDIT_FIELD_EDIT_ITEM, - ID_POPUP_LIBEDIT_FIELD_ROTATE_ITEM, - ID_POPUP_LIBEDIT_DELETE_CURRENT_POLY_SEGMENT, - ID_POPUP_LIBEDIT_ROTATE_GRAPHIC_TEXT, - - /* Library viewer horizontal toolbar IDs */ - ID_LIBVIEW_NEXT, - ID_LIBVIEW_PREVIOUS, - ID_LIBVIEW_SELECT_PART, - ID_LIBVIEW_SELECT_LIB, - ID_LIBVIEW_VIEWDOC, - ID_LIBVIEW_DE_MORGAN_NORMAL_BUTT, - ID_LIBVIEW_DE_MORGAN_CONVERT_BUTT, - ID_LIBVIEW_SELECT_PART_NUMBER, - ID_LIBVIEW_LIB_LIST, - ID_LIBVIEW_CMP_LIST, - ID_LIBVIEW_LIBWINDOW, - ID_LIBVIEW_CMPWINDOW, - ID_LIBVIEW_CMP_EXPORT_TO_SCHEMATIC, - ID_SET_RELATIVE_OFFSET -}; - - -#endif /* __EESCHEMA_ID_H__ */ +#ifndef __EESCHEMA_ID_H__ +#define __EESCHEMA_ID_H__ + + +#include "id.h" + +/** + * Command IDs for the schematic editor. + * + * Please add IDs that are unique to the schematic editor (EESchema) here and + * not in the global id.h file. This will prevent the entire project from + * being rebuilt when adding new command to EESchema. + */ + +enum id_eeschema_frm +{ + /* Schematic editor horizontal toolbar IDs */ + ID_HIERARCHY = ID_END_LIST, + ID_TO_LIBVIEW, + ID_GET_ANNOTATE, + ID_GET_ERC, + ID_BACKANNO_ITEMS, + + /* Schematic editor veritcal toolbar IDs */ + ID_SCHEMATIC_VERTICAL_TOOLBAR_START, + ID_HIERARCHY_PUSH_POP_BUTT, + ID_PLACE_POWER_BUTT, + ID_BUS_BUTT, + ID_WIRE_BUTT, + ID_BUSTOBUS_ENTRY_BUTT, + ID_WIRETOBUS_ENTRY_BUTT, + ID_LABEL_BUTT, + ID_GLABEL_BUTT, + ID_HIERLABEL_BUTT, + ID_IMPORT_HLABEL_BUTT, + ID_SHEET_LABEL_BUTT, + ID_NOCONN_BUTT, + ID_JUNCTION_BUTT, + ID_SHEET_SYMBOL_BUTT, + ID_TEXT_COMMENT_BUTT, + ID_LINE_COMMENT_BUTT, + ID_SCHEMATIC_DELETE_ITEM_BUTT, + ID_SCHEMATIC_VERTICAL_TOOLBAR_END, + + /* Schematic editor context menu IDs. */ + ID_POPUP_SCH_COPY_ITEM, + + ID_POPUP_START_RANGE, + ID_POPUP_SCH_DELETE, + ID_POPUP_SCH_BREAK_WIRE, + ID_POPUP_SCH_DELETE_CONNECTION, + ID_POPUP_SCH_MOVE_ITEM_REQUEST, + ID_POPUP_SCH_DELETE_NODE, + ID_POPUP_SCH_MOVE_CMP_REQUEST, + ID_POPUP_SCH_DELETE_CMP, + ID_POPUP_SCH_DRAG_CMP_REQUEST, + ID_POPUP_SCH_DRAG_WIRE_REQUEST, + ID_POPUP_SCH_UNUSED_2, + ID_POPUP_SCH_ENTRY_SELECT_SLASH, + ID_POPUP_SCH_ENTRY_SELECT_ANTISLASH, + + ID_POPUP_SCH_EDIT_CMP, + ID_POPUP_SCH_MIROR_X_CMP, + ID_POPUP_SCH_MIROR_Y_CMP, + ID_POPUP_SCH_ROTATE_CMP_CLOCKWISE, + ID_POPUP_SCH_ROTATE_CMP_COUNTERCLOCKWISE, + ID_POPUP_SCH_ORIENT_NORMAL_CMP, + ID_POPUP_SCH_INIT_CMP, + + ID_POPUP_SCH_EDIT_TEXT, + ID_POPUP_SCH_ROTATE_TEXT, + ID_POPUP_SCH_SET_SHAPE_TEXT, + ID_POPUP_END_LINE, + ID_POPUP_SCH_END_SHEET, + ID_POPUP_SCH_EDIT_SHEET, + ID_POPUP_SCH_RESIZE_SHEET, + ID_POPUP_SCH_CLEANUP_SHEET, + ID_POPUP_SCH_EDIT_PINSHEET, + ID_POPUP_SCH_MOVE_PINSHEET, + ID_POPUP_IMPORT_GLABEL, + ID_POPUP_SCH_GENERIC_ORIENT_CMP, + ID_POPUP_SCH_GENERIC_EDIT_CMP, + ID_POPUP_SCH_EDIT_VALUE_CMP, + ID_POPUP_SCH_EDIT_REF_CMP, + ID_POPUP_SCH_EDIT_FOOTPRINT_CMP, + ID_POPUP_SCH_EDIT_CONVERT_CMP, + ID_POPUP_SCH_SELECT_UNIT_CMP, + ID_POPUP_SCH_SELECT_UNIT1, + ID_POPUP_SCH_SELECT_UNIT2, + ID_POPUP_SCH_SELECT_UNIT3, + ID_POPUP_SCH_SELECT_UNIT4, + ID_POPUP_SCH_SELECT_UNIT5, + ID_POPUP_SCH_SELECT_UNIT6, + ID_POPUP_SCH_SELECT_UNIT7, + ID_POPUP_SCH_SELECT_UNIT8, + ID_POPUP_SCH_SELECT_UNIT9, + ID_POPUP_SCH_SELECT_UNIT10, + ID_POPUP_SCH_SELECT_UNIT11, + ID_POPUP_SCH_SELECT_UNIT12, + ID_POPUP_SCH_SELECT_UNIT13, + ID_POPUP_SCH_SELECT_UNIT14, + ID_POPUP_SCH_SELECT_UNIT15, + ID_POPUP_SCH_SELECT_UNIT16, + ID_POPUP_SCH_SELECT_UNIT17, + ID_POPUP_SCH_SELECT_UNIT18, + ID_POPUP_SCH_SELECT_UNIT19, + ID_POPUP_SCH_SELECT_UNIT20, + ID_POPUP_SCH_SELECT_UNIT21, + ID_POPUP_SCH_SELECT_UNIT22, + ID_POPUP_SCH_SELECT_UNIT23, + ID_POPUP_SCH_SELECT_UNIT24, + ID_POPUP_SCH_SELECT_UNIT25, + ID_POPUP_SCH_SELECT_UNIT26, + ID_POPUP_SCH_ROTATE_FIELD, + ID_POPUP_SCH_EDIT_FIELD, + ID_POPUP_SCH_CHANGE_TYPE_TEXT, + ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_LABEL, + ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_GLABEL, + ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_COMMENT, + ID_POPUP_SCH_DISPLAYDOC_CMP, + ID_POPUP_SCH_ENTER_SHEET, + ID_POPUP_SCH_LEAVE_SHEET, + ID_POPUP_SCH_ADD_JUNCTION, + ID_POPUP_SCH_ADD_LABEL, + ID_POPUP_SCH_ADD_GLABEL, + ID_POPUP_SCH_CHANGE_TYPE_TEXT_TO_HLABEL, + ID_POPUP_SCH_GETINFO_MARKER, + ID_POPUP_END_RANGE, + + /* Library editor horizontal toolbar IDs. */ + ID_LIBEDIT_SELECT_PART, + ID_LIBEDIT_SELECT_CURRENT_LIB, + ID_LIBEDIT_SAVE_CURRENT_LIB, + ID_LIBEDIT_SAVE_CURRENT_PART, + ID_LIBEDIT_NEW_PART, + ID_LIBEDIT_GET_FRAME_EDIT_PART, + ID_LIBEDIT_GET_FRAME_EDIT_FIELDS, + ID_LIBEDIT_DELETE_PART, + ID_DE_MORGAN_NORMAL_BUTT, + ID_DE_MORGAN_CONVERT_BUTT, + ID_LIBEDIT_EDIT_PIN_BY_PIN, + ID_LIBEDIT_VIEW_DOC, + ID_LIBEDIT_CHECK_PART, + + ID_LIBEDIT_SELECT_PART_NUMBER, + ID_LIBEDIT_SELECT_ALIAS, + + /* Library editor vertical toolbar IDs. */ + ID_LIBEDIT_PIN_BUTT, + ID_LIBEDIT_BODY_LINE_BUTT, + ID_LIBEDIT_BODY_ARC_BUTT, + ID_LIBEDIT_BODY_CIRCLE_BUTT, + ID_LIBEDIT_BODY_RECT_BUTT, + ID_LIBEDIT_BODY_TEXT_BUTT, + ID_LIBEDIT_DELETE_ITEM_BUTT, + ID_LIBEDIT_ANCHOR_ITEM_BUTT, + ID_LIBEDIT_IMPORT_BODY_BUTT, + ID_LIBEDIT_EXPORT_BODY_BUTT, + + /* Library editor context menu IDs */ + ID_LIBEDIT_EDIT_PIN, + ID_LIBEDIT_ROTATE_PIN, + ID_POPUP_LIBEDIT_PIN_GLOBAL_CHANGE_ITEM, + ID_POPUP_LIBEDIT_PIN_GLOBAL_CHANGE_PINSIZE_ITEM, + ID_POPUP_LIBEDIT_PIN_GLOBAL_CHANGE_PINNAMESIZE_ITEM, + ID_POPUP_LIBEDIT_PIN_GLOBAL_CHANGE_PINNUMSIZE_ITEM, + ID_POPUP_LIBEDIT_BODY_EDIT_ITEM, + ID_POPUP_LIBEDIT_DELETE_ITEM, + ID_POPUP_LIBEDIT_MODIFY_ITEM, + ID_POPUP_LIBEDIT_END_CREATE_ITEM, + ID_POPUP_LIBEDIT_CANCEL_EDITING, + ID_POPUP_LIBEDIT_MOVE_ITEM_REQUEST, + ID_POPUP_LIBEDIT_FIELD_EDIT_ITEM, + ID_POPUP_LIBEDIT_FIELD_ROTATE_ITEM, + ID_POPUP_LIBEDIT_DELETE_CURRENT_POLY_SEGMENT, + ID_POPUP_LIBEDIT_ROTATE_GRAPHIC_TEXT, + + /* Library viewer horizontal toolbar IDs */ + ID_LIBVIEW_NEXT, + ID_LIBVIEW_PREVIOUS, + ID_LIBVIEW_SELECT_PART, + ID_LIBVIEW_SELECT_LIB, + ID_LIBVIEW_VIEWDOC, + ID_LIBVIEW_DE_MORGAN_NORMAL_BUTT, + ID_LIBVIEW_DE_MORGAN_CONVERT_BUTT, + ID_LIBVIEW_SELECT_PART_NUMBER, + ID_LIBVIEW_LIB_LIST, + ID_LIBVIEW_CMP_LIST, + ID_LIBVIEW_LIBWINDOW, + ID_LIBVIEW_CMPWINDOW, + ID_LIBVIEW_CMP_EXPORT_TO_SCHEMATIC, + ID_SET_RELATIVE_OFFSET +}; + + +#endif /* __EESCHEMA_ID_H__ */ diff --git a/eeschema/hotkeys.cpp b/eeschema/hotkeys.cpp index 6fe1324b99..173c8e8281 100644 --- a/eeschema/hotkeys.cpp +++ b/eeschema/hotkeys.cpp @@ -31,7 +31,7 @@ * added both in eeschema and libedit) * Add the new code in the switch in OnHotKey() function. * when the variable ItemInEdit is true, an item is currently edited. - * This can be usefull if the new function cannot be executed while an item is + * This can be useful if the new function cannot be executed while an item is * currently being edited * ( For example, one cannot start a new wire when a component is moving.) * @@ -53,7 +53,7 @@ /* Fit on Screen */ static Ki_HotkeyInfo HkZoomAuto( wxT( "Fit on Screen" ), HK_ZOOM_AUTO, - WXK_HOME ); + WXK_HOME ); static Ki_HotkeyInfo HkZoomCenter( wxT( "Zoom Center" ), HK_ZOOM_CENTER, WXK_F4 ); @@ -62,16 +62,16 @@ static Ki_HotkeyInfo HkZoomRedraw( wxT( "Zoom Redraw" ), HK_ZOOM_REDRAW, /* Zoom In */ #if !defined( __WXMAC__ ) - static Ki_HotkeyInfo HkZoomIn( wxT( "Zoom In" ), HK_ZOOM_IN, WXK_F1 ); +static Ki_HotkeyInfo HkZoomIn( wxT( "Zoom In" ), HK_ZOOM_IN, WXK_F1 ); #else - static Ki_HotkeyInfo HkZoomIn( wxT( "Zoom In" ), HK_ZOOM_IN, GR_KB_CTRL + '+' ); +static Ki_HotkeyInfo HkZoomIn( wxT( "Zoom In" ), HK_ZOOM_IN, GR_KB_CTRL + '+' ); #endif /* Zoom Out */ #if !defined( __WXMAC__ ) - static Ki_HotkeyInfo HkZoomOut( wxT( "Zoom Out" ), HK_ZOOM_OUT, WXK_F2 ); +static Ki_HotkeyInfo HkZoomOut( wxT( "Zoom Out" ), HK_ZOOM_OUT, WXK_F2 ); #else - static Ki_HotkeyInfo HkZoomOut( wxT( "Zoom Out" ), HK_ZOOM_OUT, GR_KB_CTRL + '-' ); +static Ki_HotkeyInfo HkZoomOut( wxT( "Zoom Out" ), HK_ZOOM_OUT, GR_KB_CTRL + '-' ); #endif static Ki_HotkeyInfo HkHelp( wxT( "Help: this message" ), HK_HELP, '?' ); @@ -84,12 +84,12 @@ static Ki_HotkeyInfo HkUndo( wxT( "Undo" ), HK_UNDO, GR_KB_CTRL + 'Z', /* Redo */ #if !defined( __WXMAC__ ) - static Ki_HotkeyInfo HkRedo( wxT( "Redo" ), HK_REDO, GR_KB_CTRL + 'Y', +static Ki_HotkeyInfo HkRedo( wxT( "Redo" ), HK_REDO, GR_KB_CTRL + 'Y', (int) wxID_REDO ); #else - static Ki_HotkeyInfo HkRedo( wxT( "Redo" ), HK_REDO, - GR_KB_SHIFT + GR_KB_CTRL + 'Z', - (int) ID_SCHEMATIC_REDO ); +static Ki_HotkeyInfo HkRedo( wxT( "Redo" ), HK_REDO, + GR_KB_SHIFT + GR_KB_CTRL + 'Z', + (int) ID_SCHEMATIC_REDO ); #endif // Schematic editor @@ -102,26 +102,26 @@ static Ki_HotkeyInfo HkMirrorXComponent( wxT( "Mirror X Component" ), HK_MIRROR_X_COMPONENT, 'X' ); static Ki_HotkeyInfo HkOrientNormalComponent( wxT( "Orient Normal Component" ), HK_ORIENT_NORMAL_COMPONENT, 'N' ); -static Ki_HotkeyInfo HkRotateComponentOrItem( wxT( "Rotate Schematic Item" ), - HK_ROTATE_COMPONENT_OR_ITEM, 'R' ); -static Ki_HotkeyInfo HkEditComponent( wxT( "Edit Component or Label" ), - HK_EDIT_COMPONENT_OR_LABEL, 'E' ); +static Ki_HotkeyInfo HkRotate( wxT( "Rotate Schematic Item" ), + HK_ROTATE, 'R' ); +static Ki_HotkeyInfo HkEdit( wxT( "Edit Schematic Item" ), + HK_EDIT, 'E' ); static Ki_HotkeyInfo HkEditComponentValue( wxT( "Edit Component Value" ), HK_EDIT_COMPONENT_VALUE, 'V' ); static Ki_HotkeyInfo HkEditComponentFootprint( wxT( "Edit Component Footprint" ), HK_EDIT_COMPONENT_FOOTPRINT, 'F' ); -static Ki_HotkeyInfo HkMoveComponentOrItem( wxT( "Move Schematic Item" ), - HK_MOVE_COMPONENT_OR_ITEM, 'M', - ID_POPUP_SCH_MOVE_CMP_REQUEST ); +static Ki_HotkeyInfo HkMove( wxT( "Move Schematic Item" ), + HK_MOVE_COMPONENT_OR_ITEM, 'M', + ID_POPUP_SCH_MOVE_CMP_REQUEST ); static Ki_HotkeyInfo HkCopyComponentOrText( wxT( "Copy Component or Label" ), - HK_COPY_COMPONENT_OR_LABEL, 'C', - ID_POPUP_SCH_COPY_ITEM ); + HK_COPY_COMPONENT_OR_LABEL, 'C', + ID_POPUP_SCH_COPY_ITEM ); -static Ki_HotkeyInfo HkDragComponent( wxT( "Drag Component" ), - HK_DRAG_COMPONENT, 'G', - ID_POPUP_SCH_DRAG_CMP_REQUEST ); +static Ki_HotkeyInfo HkDrag( wxT( "Drag Schematic Item" ), + HK_DRAG, 'G', + ID_POPUP_SCH_DRAG_CMP_REQUEST ); static Ki_HotkeyInfo HkMove2Drag( wxT( "Switch move block to drag block" ), HK_MOVEBLOCK_TO_DRAGBLOCK, '\t' ); static Ki_HotkeyInfo HkInsert( wxT( "Repeat Last Item" ), HK_REPEAT_LAST, @@ -130,12 +130,10 @@ static Ki_HotkeyInfo HkDelete( wxT( "Delete Item" ), HK_DELETE, WXK_DELETE ); static Ki_HotkeyInfo HkNextSearch( wxT( "Next Search" ), HK_NEXT_SEARCH, WXK_F5 ); -// Library editor: +// Special keys for library editor: static Ki_HotkeyInfo HkInsertPin( wxT( "Repeat Pin" ), HK_REPEAT_LAST, WXK_INSERT ); -static Ki_HotkeyInfo HkEditPin( wxT( "Edit Pin" ), HK_EDIT_PIN, 'E' ); static Ki_HotkeyInfo HkMovePin( wxT( "Move Pin" ), HK_LIBEDIT_MOVE_GRAPHIC_ITEM, 'M' ); -static Ki_HotkeyInfo HkRotatePin( wxT( "Rotate Pin" ), HK_LIBEDIT_ROTATE_PIN, 'R' ); static Ki_HotkeyInfo HkDeletePin( wxT( "Delete Pin" ), HK_DELETE_PIN, WXK_DELETE ); @@ -144,10 +142,14 @@ static Ki_HotkeyInfo HkDeletePin( wxT( "Delete Pin" ), HK_DELETE_PIN, Ki_HotkeyInfo* s_Common_Hotkey_List[] = { &HkHelp, - &HkZoomIn, &HkZoomOut, &HkZoomRedraw, - &HkZoomCenter, &HkZoomAuto, + &HkZoomIn, + &HkZoomOut, + &HkZoomRedraw, + &HkZoomCenter, + &HkZoomAuto, &HkResetLocalCoord, - &HkUndo, &HkRedo, + &HkUndo, + &HkRedo, NULL }; @@ -155,12 +157,20 @@ Ki_HotkeyInfo* s_Common_Hotkey_List[] = Ki_HotkeyInfo* s_Schematic_Hotkey_List[] = { &HkNextSearch, - &HkDelete, &HkInsert, &HkMove2Drag, - &HkMoveComponentOrItem, &HkCopyComponentOrText, - &HkDragComponent, &HkAddComponent, - &HkRotateComponentOrItem, &HkMirrorXComponent, &HkMirrorYComponent, + &HkDelete, + &HkInsert, + &HkMove2Drag, + &HkMove, + &HkCopyComponentOrText, + &HkDrag, + &HkAddComponent, + &HkRotate, + &HkMirrorXComponent, + &HkMirrorYComponent, &HkOrientNormalComponent, - &HkEditComponent,&HkEditComponentValue,&HkEditComponentFootprint, + &HkEdit, + &HkEditComponentValue, + &HkEditComponentFootprint, &HkBeginWire, NULL }; @@ -169,10 +179,11 @@ Ki_HotkeyInfo* s_Schematic_Hotkey_List[] = Ki_HotkeyInfo* s_LibEdit_Hotkey_List[] = { &HkInsertPin, - &HkEditPin, + &HkEdit, &HkMovePin, &HkDeletePin, - &HkRotatePin, + &HkRotate, + &HkDrag, NULL }; @@ -180,10 +191,10 @@ Ki_HotkeyInfo* s_LibEdit_Hotkey_List[] = // an hotkey config file) struct Ki_HotkeyInfoSectionDescriptor s_Eeschema_Hokeys_Descr[] = { - { &g_CommonSectionTag, s_Common_Hotkey_List, "Common keys" }, + { &g_CommonSectionTag, s_Common_Hotkey_List, "Common keys" }, { &g_SchematicSectionTag, s_Schematic_Hotkey_List, "Schematic editor keys" }, - { &g_LibEditSectionTag, s_LibEdit_Hotkey_List, "library editor keys" }, - { NULL, NULL, NULL } + { &g_LibEditSectionTag, s_LibEdit_Hotkey_List, "library editor keys" }, + { NULL, NULL, NULL } }; // list of sections and corresponding hotkey list for the schematic editor @@ -192,7 +203,7 @@ struct Ki_HotkeyInfoSectionDescriptor s_Schematic_Hokeys_Descr[] = { { &g_CommonSectionTag, s_Common_Hotkey_List, NULL }, { &g_SchematicSectionTag, s_Schematic_Hotkey_List, NULL }, - { NULL, NULL, NULL } + { NULL, NULL, NULL } }; // list of sections and corresponding hotkey list for the component editor @@ -201,15 +212,15 @@ struct Ki_HotkeyInfoSectionDescriptor s_Libedit_Hokeys_Descr[] = { { &g_CommonSectionTag, s_Common_Hotkey_List, NULL }, { &g_LibEditSectionTag, s_LibEdit_Hotkey_List, NULL }, - { NULL, NULL, NULL } + { NULL, NULL, NULL } }; // list of sections and corresponding hotkey list for the component browser // (used to list current hotkeys) struct Ki_HotkeyInfoSectionDescriptor s_Viewlib_Hokeys_Descr[] = { - { &g_CommonSectionTag, s_Common_Hotkey_List, NULL }, - { NULL, NULL, NULL } + { &g_CommonSectionTag, s_Common_Hotkey_List, NULL }, + { NULL, NULL, NULL } }; /* @@ -223,9 +234,9 @@ void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey, cmd.SetEventObject( this ); - bool ItemInEdit = GetScreen()->GetCurItem() - && GetScreen()->GetCurItem()->m_Flags; - bool RefreshToolBar = FALSE; + bool ItemInEdit = GetScreen()->GetCurItem() + && GetScreen()->GetCurItem()->m_Flags; + bool RefreshToolBar = FALSE; SCH_SCREEN* screen = GetScreen(); if( hotkey == 0 ) @@ -330,12 +341,13 @@ void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey, // switch to m_ID_current_state = ID_COMPONENT_BUTT; if( m_ID_current_state != ID_COMPONENT_BUTT ) SetToolID( ID_COMPONENT_BUTT, wxCURSOR_PENCIL, - _( "Add Component" ) ); + _( "Add Component" ) ); OnLeftClick( DC, MousePos ); } break; case HK_BEGIN_WIRE: + /* An item is selected. If edited and not a wire, a new command is not * possible */ if( !ItemInEdit && screen->m_BlockLocate.m_State == STATE_NO_BLOCK ) @@ -359,12 +371,12 @@ void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey, } break; - case HK_ROTATE_COMPONENT_OR_ITEM: // Component or other schematic item rotation + case HK_ROTATE: // Component or other schematic item rotation if( DrawStruct == NULL ) { - // Find the schematic object to rotate under the cursor - DrawStruct = SchematicGeneralLocateAndDisplay( false ); + // Find the schematic object to rotate under the cursor + DrawStruct = SchematicGeneralLocateAndDisplay( false ); if( DrawStruct == NULL ) break; @@ -376,35 +388,36 @@ void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey, break; } - if (DrawStruct) + if( DrawStruct ) { - GetScreen()->SetCurItem( (SCH_ITEM*) DrawStruct ); + GetScreen()->SetCurItem( (SCH_ITEM*) DrawStruct ); - // Create the events for rotating a component or other schematic item + // Create the events for rotating a component or other schematic item wxCommandEvent eventRotateComponent( wxEVT_COMMAND_TOOL_CLICKED, - ID_POPUP_SCH_ROTATE_CMP_COUNTERCLOCKWISE ); - wxCommandEvent eventRotateText(wxEVT_COMMAND_TOOL_CLICKED, - ID_POPUP_SCH_ROTATE_TEXT ); - wxCommandEvent eventRotateField(wxEVT_COMMAND_TOOL_CLICKED, - ID_POPUP_SCH_ROTATE_FIELD ); + ID_POPUP_SCH_ROTATE_CMP_COUNTERCLOCKWISE ); + wxCommandEvent eventRotateText( wxEVT_COMMAND_TOOL_CLICKED, + ID_POPUP_SCH_ROTATE_TEXT ); + wxCommandEvent eventRotateField( wxEVT_COMMAND_TOOL_CLICKED, + ID_POPUP_SCH_ROTATE_FIELD ); switch( DrawStruct->Type() ) { - case TYPE_SCH_COMPONENT: - wxPostEvent( this, eventRotateComponent ); - break; + case TYPE_SCH_COMPONENT: + wxPostEvent( this, eventRotateComponent ); + break; - case TYPE_SCH_TEXT: - case TYPE_SCH_LABEL: - case TYPE_SCH_GLOBALLABEL: - case TYPE_SCH_HIERLABEL: - wxPostEvent( this, eventRotateText ); - break; - case DRAW_PART_TEXT_STRUCT_TYPE: - wxPostEvent( this, eventRotateField ); + case TYPE_SCH_TEXT: + case TYPE_SCH_LABEL: + case TYPE_SCH_GLOBALLABEL: + case TYPE_SCH_HIERLABEL: + wxPostEvent( this, eventRotateText ); + break; - default: - ; + case DRAW_PART_TEXT_STRUCT_TYPE: + wxPostEvent( this, eventRotateField ); + + default: + ; } } @@ -453,15 +466,15 @@ void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey, } break; - case HK_DRAG_COMPONENT: // Start drag component + case HK_DRAG: // Start drag case HK_MOVE_COMPONENT_OR_ITEM: // Start move component or other schematic item - case HK_COPY_COMPONENT_OR_LABEL: // Duplicate component or text/label + case HK_COPY_COMPONENT_OR_LABEL: // Duplicate component or text/label if( ItemInEdit ) break; if( DrawStruct == NULL ) { - // Find the schematic object to move under the cursor + // Find the schematic object to move under the cursor DrawStruct = SchematicGeneralLocateAndDisplay( false ); if( DrawStruct == NULL ) @@ -470,16 +483,18 @@ void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey, DrawStruct = LocateSmallestComponent( GetScreen() ); if( DrawStruct == NULL ) break; - if( DrawStruct->Type() == DRAW_SHEET_STRUCT_TYPE ){ - // If it's a sheet, then check if a pinsheet is under the cursor - SCH_SHEET_PIN* slabel = LocateSheetLabel( (SCH_SHEET*) DrawStruct, - GetScreen()->m_Curseur ); - if (slabel) - DrawStruct = slabel; + if( DrawStruct->Type() == DRAW_SHEET_STRUCT_TYPE ) + { + // If it's a sheet, then check if a pinsheet is under the cursor + SCH_SHEET_PIN* slabel = LocateSheetLabel( (SCH_SHEET*) DrawStruct, + GetScreen()->m_Curseur ); + if( slabel ) + DrawStruct = slabel; } - if (DrawStruct->Type() == DRAW_JUNCTION_STRUCT_TYPE){ - // If it's a junction, pick the underlying wire instead - DrawStruct = PickStruct( GetScreen()->m_Curseur, GetScreen(), WIREITEM); + if( DrawStruct->Type() == DRAW_JUNCTION_STRUCT_TYPE ) + { + // If it's a junction, pick the underlying wire instead + DrawStruct = PickStruct( GetScreen()->m_Curseur, GetScreen(), WIREITEM ); } if( DrawStruct == NULL ) break; @@ -489,60 +504,60 @@ void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey, { GetScreen()->SetCurItem( (SCH_ITEM*) DrawStruct ); wxCommandEvent event( wxEVT_COMMAND_TOOL_CLICKED, - HK_Descr->m_IdMenuEvent ); + HK_Descr->m_IdMenuEvent ); wxPostEvent( this, event ); break; } - if( DrawStruct && (DrawStruct->m_Flags == 0) ){ + if( DrawStruct && (DrawStruct->m_Flags == 0) ) + { GetScreen()->SetCurItem( (SCH_ITEM*) DrawStruct ); - // Create the events for moving a component or other schematic item + // Create the events for moving a component or other schematic item wxCommandEvent eventMoveComponent( wxEVT_COMMAND_TOOL_CLICKED, - HK_Descr->m_IdMenuEvent ); - wxCommandEvent eventMoveItem(wxEVT_COMMAND_TOOL_CLICKED, - ID_POPUP_SCH_MOVE_ITEM_REQUEST ); - wxCommandEvent eventMovePinsheet(wxEVT_COMMAND_TOOL_CLICKED, - ID_POPUP_SCH_MOVE_PINSHEET); - wxCommandEvent eventDragWire(wxEVT_COMMAND_TOOL_CLICKED, - ID_POPUP_SCH_DRAG_WIRE_REQUEST); + HK_Descr->m_IdMenuEvent ); + wxCommandEvent eventMoveItem( wxEVT_COMMAND_TOOL_CLICKED, + ID_POPUP_SCH_MOVE_ITEM_REQUEST ); + wxCommandEvent eventMovePinsheet( wxEVT_COMMAND_TOOL_CLICKED, + ID_POPUP_SCH_MOVE_PINSHEET ); + wxCommandEvent eventDragWire( wxEVT_COMMAND_TOOL_CLICKED, + ID_POPUP_SCH_DRAG_WIRE_REQUEST ); switch( DrawStruct->Type() ) { + // select the correct event for moving an schematic object + // and add it to the event queue + case TYPE_SCH_COMPONENT: + wxPostEvent( this, eventMoveComponent ); + break; - // select the correct event for moving an schematic object - // and add it to the event queue - case TYPE_SCH_COMPONENT: - wxPostEvent( this, eventMoveComponent ); - break; + case TYPE_SCH_TEXT: + case TYPE_SCH_LABEL: + case TYPE_SCH_GLOBALLABEL: + case TYPE_SCH_HIERLABEL: + case DRAW_SHEET_STRUCT_TYPE: + case DRAW_PART_TEXT_STRUCT_TYPE: + case DRAW_BUSENTRY_STRUCT_TYPE: + wxPostEvent( this, eventMoveItem ); + break; - case TYPE_SCH_TEXT: - case TYPE_SCH_LABEL: - case TYPE_SCH_GLOBALLABEL: - case TYPE_SCH_HIERLABEL: - case DRAW_SHEET_STRUCT_TYPE: - case DRAW_PART_TEXT_STRUCT_TYPE: - case DRAW_BUSENTRY_STRUCT_TYPE: - wxPostEvent( this, eventMoveItem ); - break; + case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE: + wxPostEvent( this, eventMovePinsheet ); + break; - case DRAW_HIERARCHICAL_PIN_SHEET_STRUCT_TYPE: - wxPostEvent( this, eventMovePinsheet ); - break; + case DRAW_SEGMENT_STRUCT_TYPE: + if( ( (SCH_ITEM*) DrawStruct )->GetLayer() == LAYER_WIRE ) + wxPostEvent( this, eventDragWire ); + break; - case DRAW_SEGMENT_STRUCT_TYPE: - if (((SCH_ITEM*)DrawStruct)->GetLayer() == LAYER_WIRE) - wxPostEvent( this, eventDragWire ); - break; - - default: - ; + default: + ; } } break; - case HK_EDIT_COMPONENT_OR_LABEL: + case HK_EDIT: if( ItemInEdit ) break; @@ -561,30 +576,30 @@ void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey, if( DrawStruct ) { + wxCommandEvent eventEditPinsheet( wxEVT_COMMAND_TOOL_CLICKED, + ID_POPUP_SCH_EDIT_SHEET ); - wxCommandEvent eventEditPinsheet(wxEVT_COMMAND_TOOL_CLICKED, - ID_POPUP_SCH_EDIT_SHEET); - switch( DrawStruct->Type() ) - { - case TYPE_SCH_COMPONENT: - InstallCmpeditFrame( this, MousePos,(SCH_COMPONENT*) DrawStruct ); - break; + switch( DrawStruct->Type() ) + { + case TYPE_SCH_COMPONENT: + InstallCmpeditFrame( this, MousePos, (SCH_COMPONENT*) DrawStruct ); + break; - case DRAW_SHEET_STRUCT_TYPE: - GetScreen()->SetCurItem( (SCH_ITEM*) DrawStruct ); - wxPostEvent( this, eventEditPinsheet ); - break; + case DRAW_SHEET_STRUCT_TYPE: + GetScreen()->SetCurItem( (SCH_ITEM*) DrawStruct ); + wxPostEvent( this, eventEditPinsheet ); + break; - case TYPE_SCH_TEXT: - case TYPE_SCH_LABEL: - case TYPE_SCH_GLOBALLABEL: - case TYPE_SCH_HIERLABEL: - EditSchematicText( (SCH_TEXT*) DrawStruct ); - break; + case TYPE_SCH_TEXT: + case TYPE_SCH_LABEL: + case TYPE_SCH_GLOBALLABEL: + case TYPE_SCH_HIERLABEL: + EditSchematicText( (SCH_TEXT*) DrawStruct ); + break; - default: - ; - } + default: + ; + } } break; @@ -629,9 +644,9 @@ void WinEDA_LibeditFrame::OnHotKey( wxDC* DC, int hotkey, cmd.SetEventObject( this ); - wxPoint MousePos = GetScreen()->m_MousePosition; - bool ItemInEdit = GetScreen()->GetCurItem() - && GetScreen()->GetCurItem()->m_Flags; + wxPoint MousePos = GetScreen()->m_MousePosition; + bool ItemInEdit = GetScreen()->GetCurItem() + && GetScreen()->GetCurItem()->m_Flags; if( hotkey == 0 ) return; @@ -713,27 +728,55 @@ void WinEDA_LibeditFrame::OnHotKey( wxDC* DC, int hotkey, wxBell(); break; - case HK_EDIT_PIN: + case HK_EDIT: m_drawItem = LocateItemUsingCursor(); - if( m_drawItem && m_drawItem->Type() == COMPONENT_PIN_DRAW_TYPE ) + if( m_drawItem ) { - cmd.SetId( ID_LIBEDIT_EDIT_PIN ); - GetEventHandler()->ProcessEvent( cmd ); - } + switch( m_drawItem->Type() ) + { + case COMPONENT_PIN_DRAW_TYPE: + cmd.SetId( ID_LIBEDIT_EDIT_PIN ); + GetEventHandler()->ProcessEvent( cmd ); + break; + case COMPONENT_ARC_DRAW_TYPE: + case COMPONENT_CIRCLE_DRAW_TYPE: + case COMPONENT_RECT_DRAW_TYPE: + case COMPONENT_POLYLINE_DRAW_TYPE: + case COMPONENT_GRAPHIC_TEXT_DRAW_TYPE: + cmd.SetId( ID_POPUP_LIBEDIT_BODY_EDIT_ITEM ); + GetEventHandler()->ProcessEvent( cmd ); + break; + + default: + break; + } + } break; - case HK_LIBEDIT_ROTATE_PIN: - m_drawItem = LocateItemUsingCursor(); + case HK_ROTATE: + m_drawItem = LocateItemUsingCursor(); - if( m_drawItem && m_drawItem->Type() == COMPONENT_PIN_DRAW_TYPE ) - { - cmd.SetId( ID_LIBEDIT_ROTATE_PIN ); - GetEventHandler()->ProcessEvent( cmd ); - } + if( m_drawItem ) + { + switch( m_drawItem->Type() ) + { + case COMPONENT_PIN_DRAW_TYPE: + cmd.SetId( ID_LIBEDIT_ROTATE_PIN ); + GetEventHandler()->ProcessEvent( cmd ); + break; - break; + case COMPONENT_GRAPHIC_TEXT_DRAW_TYPE: + cmd.SetId( ID_POPUP_LIBEDIT_ROTATE_GRAPHIC_TEXT ); + GetEventHandler()->ProcessEvent( cmd ); + break; + + default: + break; + } + } + break; case HK_DELETE_PIN: @@ -757,5 +800,16 @@ void WinEDA_LibeditFrame::OnHotKey( wxDC* DC, int hotkey, Process_Special_Functions( evt ); } break; + + case HK_DRAG: + m_drawItem = LocateItemUsingCursor(); + + if( m_drawItem ) + { + wxCommandEvent evt; + evt.SetId( ID_POPUP_LIBEDIT_MODIFY_ITEM ); + Process_Special_Functions( evt ); + } + break; } } diff --git a/eeschema/hotkeys.h b/eeschema/hotkeys.h index b20bb92620..54471afa98 100644 --- a/eeschema/hotkeys.h +++ b/eeschema/hotkeys.h @@ -25,8 +25,8 @@ enum hotkey_id_commnand { HK_UNDO, HK_REDO, HK_MOVEBLOCK_TO_DRAGBLOCK, - HK_ROTATE_COMPONENT_OR_ITEM, - HK_EDIT_COMPONENT_OR_LABEL, + HK_ROTATE, + HK_EDIT, HK_EDIT_COMPONENT_VALUE, HK_EDIT_COMPONENT_FOOTPRINT, HK_MIRROR_X_COMPONENT, @@ -34,7 +34,7 @@ enum hotkey_id_commnand { HK_ORIENT_NORMAL_COMPONENT, HK_MOVE_COMPONENT_OR_ITEM, HK_COPY_COMPONENT_OR_LABEL, - HK_DRAG_COMPONENT, + HK_DRAG, HK_ADD_NEW_COMPONENT, HK_BEGIN_WIRE }; diff --git a/eeschema/libedit_onleftclick.cpp b/eeschema/libedit_onleftclick.cpp index f697cd6c65..bb96f6cdcc 100644 --- a/eeschema/libedit_onleftclick.cpp +++ b/eeschema/libedit_onleftclick.cpp @@ -30,7 +30,9 @@ void WinEDA_LibeditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos ) { if( DrawEntry && DrawEntry->m_Flags ) { - SaveCopyInUndoList( m_component ); + // Don't put copy in undo list while resizing (because it's already done) + if (!(DrawEntry->m_Flags & IS_RESIZED)) + SaveCopyInUndoList( m_component ); switch( DrawEntry->Type() ) { diff --git a/eeschema/libedit_onrightclick.cpp b/eeschema/libedit_onrightclick.cpp index a4c179f190..63cd1444d8 100644 --- a/eeschema/libedit_onrightclick.cpp +++ b/eeschema/libedit_onrightclick.cpp @@ -84,9 +84,17 @@ bool WinEDA_LibeditFrame::OnRightClick( const wxPoint& MousePos, HK_LIBEDIT_MOVE_GRAPHIC_ITEM ); ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_MOVE_ITEM_REQUEST, msg, move_arc_xpm ); + msg = AddHotkeyName( _( "Drag Arc Size" ), s_Libedit_Hokeys_Descr, + HK_DRAG ); + ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_MODIFY_ITEM, + msg, move_arc_xpm ); } + + msg = AddHotkeyName( _( "Edit Arc Options" ), s_Libedit_Hokeys_Descr, + HK_EDIT ); ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_BODY_EDIT_ITEM, - _( "Arc Options" ), options_arc_xpm ); + msg, options_arc_xpm ); + if( DrawEntry->m_Flags == 0 ) { msg = AddHotkeyName( _( "Delete Arc " ), s_Libedit_Hokeys_Descr, @@ -104,8 +112,20 @@ bool WinEDA_LibeditFrame::OnRightClick( const wxPoint& MousePos, ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_MOVE_ITEM_REQUEST, msg, move_circle_xpm ); } + + if( DrawEntry->m_Flags == 0 ) + { + msg = AddHotkeyName( _( "Drag Circle Outline" ), s_Libedit_Hokeys_Descr, + HK_DRAG ); + ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_MODIFY_ITEM, + msg, move_rectangle_xpm ); + } + + msg = AddHotkeyName( _( "Edit Circle Options" ), s_Libedit_Hokeys_Descr, + HK_EDIT ); ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_BODY_EDIT_ITEM, - _( "Circle Options" ), options_circle_xpm ); + msg, options_circle_xpm ); + if( DrawEntry->m_Flags == 0 ) { msg = AddHotkeyName( _( "Delete Circle " ), @@ -118,20 +138,33 @@ bool WinEDA_LibeditFrame::OnRightClick( const wxPoint& MousePos, case COMPONENT_RECT_DRAW_TYPE: if( DrawEntry->m_Flags == 0 ) { - msg = AddHotkeyName( _( "Move Rect " ), s_Libedit_Hokeys_Descr, + msg = AddHotkeyName( _( "Move Rectangle " ), s_Libedit_Hokeys_Descr, HK_LIBEDIT_MOVE_GRAPHIC_ITEM ); ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_MOVE_ITEM_REQUEST, msg, move_rectangle_xpm ); } + + msg = AddHotkeyName( _( "Edit Rectangle Options" ), s_Libedit_Hokeys_Descr, + HK_EDIT ); ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_BODY_EDIT_ITEM, - _( "Rect Options" ), options_rectangle_xpm ); + msg, options_rectangle_xpm ); + + if( DrawEntry->m_Flags == 0 ) + { + msg = AddHotkeyName( _( "Drag Rectangle Edge" ), s_Libedit_Hokeys_Descr, + HK_DRAG ); + ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_MODIFY_ITEM, + msg, move_rectangle_xpm ); + } + if( DrawEntry->m_Flags == 0 ) { - msg = AddHotkeyName( _( "Delete Rect " ), s_Libedit_Hokeys_Descr, + msg = AddHotkeyName( _( "Delete Rectangle " ), s_Libedit_Hokeys_Descr, HK_DELETE_PIN ); ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_DELETE_ITEM, msg, delete_rectangle_xpm ); } + break; case COMPONENT_GRAPHIC_TEXT_DRAW_TYPE: @@ -142,10 +175,17 @@ bool WinEDA_LibeditFrame::OnRightClick( const wxPoint& MousePos, ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_MOVE_ITEM_REQUEST, msg, move_text_xpm ); } + + msg = AddHotkeyName( _( "Edit Text " ), s_Libedit_Hokeys_Descr, + HK_EDIT ); ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_BODY_EDIT_ITEM, - _( "Text Editor" ), edit_text_xpm ); + msg, edit_text_xpm ); + + msg = AddHotkeyName( _( "Rotate Text " ), s_Libedit_Hokeys_Descr, + HK_ROTATE ); ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_ROTATE_GRAPHIC_TEXT, - _( "Rotate Text" ), edit_text_xpm ); + msg, edit_text_xpm ); + if( DrawEntry->m_Flags == 0 ) { msg = AddHotkeyName( _( "Delete Text " ), s_Libedit_Hokeys_Descr, @@ -162,14 +202,23 @@ bool WinEDA_LibeditFrame::OnRightClick( const wxPoint& MousePos, HK_LIBEDIT_MOVE_GRAPHIC_ITEM ); ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_MOVE_ITEM_REQUEST, msg, move_line_xpm ); + msg = AddHotkeyName( _( "Drag Edge Point" ), s_Libedit_Hokeys_Descr, + HK_DRAG ); + ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_MODIFY_ITEM, + msg, move_line_xpm ); } + if( DrawEntry->m_Flags & IS_NEW ) { ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_END_CREATE_ITEM, _( "Line End" ), apply_xpm ); } + + msg = AddHotkeyName( _( "Edit Line Options" ), s_Libedit_Hokeys_Descr, + HK_EDIT ); ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_BODY_EDIT_ITEM, - _( "Line Options" ), options_segment_xpm ); + msg, options_segment_xpm ); + if( DrawEntry->m_Flags == 0 ) { msg = AddHotkeyName( _( "Delete Line " ), s_Libedit_Hokeys_Descr, @@ -188,6 +237,7 @@ bool WinEDA_LibeditFrame::OnRightClick( const wxPoint& MousePos, msg, delete_segment_xpm ); } } + break; case COMPONENT_FIELD_DRAW_TYPE: @@ -236,10 +286,10 @@ void AddMenusForPin( wxMenu* PopMenu, msg, move_xpm ); } - msg = AddHotkeyName( _( "Edit Pin " ), s_Libedit_Hokeys_Descr, HK_EDIT_PIN ); + msg = AddHotkeyName( _( "Edit Pin " ), s_Libedit_Hokeys_Descr, HK_EDIT); ADD_MENUITEM( PopMenu, ID_LIBEDIT_EDIT_PIN, msg, edit_xpm ); - msg = AddHotkeyName( _( "Rotate Pin " ), s_Libedit_Hokeys_Descr, HK_LIBEDIT_ROTATE_PIN ); + msg = AddHotkeyName( _( "Rotate Pin " ), s_Libedit_Hokeys_Descr, HK_ROTATE ); ADD_MENUITEM( PopMenu, ID_LIBEDIT_ROTATE_PIN, msg, rotate_pin_xpm ); if( not_in_move ) diff --git a/eeschema/libeditfrm.h b/eeschema/libeditfrm.h index 977c87ffa8..d91de2afb9 100644 --- a/eeschema/libeditfrm.h +++ b/eeschema/libeditfrm.h @@ -1,259 +1,260 @@ -/*****************************/ -/* class WinEDA_LibeditFrame */ -/*****************************/ - -#ifndef __LIBEDITFRM_H__ -#define __LIBEDITFRM_H__ - -#include "wxstruct.h" - - -class SCH_SCREEN; -class CMP_LIBRARY; -class LIB_COMPONENT; -class LIB_ALIAS; -class LIB_DRAW_ITEM; -class WinEDA_bodygraphics_PropertiesFrame; -class Dialog_BodyGraphicText_Properties; - - -/** - * The component library editor main window. - */ -class WinEDA_LibeditFrame : public WinEDA_DrawFrame -{ -public: - WinEDAChoiceBox* m_SelpartBox; // a Box to select a part to edit (if any) - WinEDAChoiceBox* m_SelAliasBox; // a box to select the alias to edit (if any) - -public: - WinEDA_LibeditFrame( wxWindow* father, - const wxString& title, - const wxPoint& pos, const wxSize& size, - long style = KICAD_DEFAULT_DRAWFRAME_STYLE ); - - ~WinEDA_LibeditFrame(); - - /** Function EnsureActiveLibExists - * Must be called after the libraries are reloaded - * (for instance after loading a schematic project) - */ - static void EnsureActiveLibExists(); - - void Process_Special_Functions( wxCommandEvent& event ); - void OnImportPart( wxCommandEvent& event ); - void OnExportPart( wxCommandEvent& event ); - void OnSelectAlias( wxCommandEvent& event ); - void OnSelectPart( wxCommandEvent& event ); - void DeleteOnePart( wxCommandEvent& event ); - void CreateNewLibraryPart( wxCommandEvent& event ); - void OnEditComponentProperties( wxCommandEvent& event ); - void InstallFieldsEditorDialog( wxCommandEvent& event ); - void LoadOneLibraryPart( wxCommandEvent& event ); - void OnViewEntryDoc( wxCommandEvent& event ); - void OnCheckComponent( wxCommandEvent& event ); - void OnSelectBodyStyle( wxCommandEvent& event ); - void OnEditPin( wxCommandEvent& event ); - void OnRotatePin( wxCommandEvent& event ); - - void OnUpdateEditingPart( wxUpdateUIEvent& event ); - void OnUpdateNotEditingPart( wxUpdateUIEvent& event ); - void OnUpdateUndo( wxUpdateUIEvent& event ); - void OnUpdateRedo( wxUpdateUIEvent& event ); - void OnUpdateSaveCurrentLib( wxUpdateUIEvent& event ); - void OnUpdateViewDoc( wxUpdateUIEvent& event ); - void OnUpdatePinByPin( wxUpdateUIEvent& event ); - void OnUpdatePartNumber( wxUpdateUIEvent& event ); - void OnUpdateDeMorganNormal( wxUpdateUIEvent& event ); - void OnUpdateDeMorganConvert( wxUpdateUIEvent& event ); - void OnUpdateSelectAlias( wxUpdateUIEvent& event ); - - void UpdateAliasSelectList(); - void UpdatePartSelectList(); - void DisplayLibInfos(); - void RedrawActiveWindow( wxDC* DC, bool EraseBg ); - void OnCloseWindow( wxCloseEvent& Event ); - void ReCreateHToolbar(); - void ReCreateVToolbar(); - void OnLeftClick( wxDC* DC, const wxPoint& MousePos ); - bool OnRightClick( const wxPoint& MousePos, wxMenu* PopMenu ); - int BestZoom(); // Returns the best zoom - void OnLeftDClick( wxDC* DC, const wxPoint& MousePos ); - - SCH_SCREEN* GetScreen() { return (SCH_SCREEN*) GetBaseScreen(); } - void OnHotKey( wxDC* DC, int hotkey, - EDA_BaseStruct* DrawStruct ); - - void GeneralControle( wxDC* DC, - wxPoint MousePositionInPixels ); - - void LoadSettings(); - void SaveSettings(); - - LIB_COMPONENT* GetComponent( void ) { return m_component; } - - CMP_LIBRARY* GetLibrary( void ) { return m_library; } - - wxString& GetAliasName( void ) { return m_aliasName; } - - int GetUnit( void ) { return m_unit; } - - void SetUnit( int unit ) - { - wxASSERT( unit >= 1 ); - m_unit = unit; - } - - - int GetConvert( void ) { return m_convert; } - - void SetConvert( int convert ) - { - wxASSERT( convert >= 0 ); - m_convert = convert; - } - - - LIB_DRAW_ITEM* GetLastDrawItem( void ) { return m_lastDrawItem; } - - void SetLastDrawItem( LIB_DRAW_ITEM* drawItem ) - { - m_lastDrawItem = drawItem; - } - - - LIB_DRAW_ITEM* GetDrawItem( void ) { return m_drawItem; } - - void SetDrawItem( LIB_DRAW_ITEM* drawItem ); - - bool GetShowDeMorgan( void ) { return m_showDeMorgan; } - - void SetShowDeMorgan( bool show ) { m_showDeMorgan = show; } - - FILL_T GetFillStyle( void ) { return m_drawFillStyle; } - -private: - - /** OnActivate event funtion( virtual ) - */ - virtual void OnActivate( wxActivateEvent& event ); - - // General: - void SaveOnePartInMemory(); - void SelectActiveLibrary(); - void SaveActiveLibrary( wxCommandEvent& event ); - - bool LoadOneLibraryPartAux( CMP_LIB_ENTRY* LibEntry, - CMP_LIBRARY* Library ); - - void DisplayCmpDoc(); - void EditComponentProperties(); - - // General editing -public: - void SaveCopyInUndoList( EDA_BaseStruct* ItemToCopy, - int flag_type_command = 0 ); - -private: - void GetComponentFromUndoList( wxCommandEvent& event ); - void GetComponentFromRedoList( wxCommandEvent& event ); - - // Editing pins - void CreatePin( wxDC* DC ); - void DeletePin( wxDC* DC, - LIB_COMPONENT* LibEntry, - LIB_PIN* Pin ); - void StartMovePin( wxDC* DC ); - - // Editing anchor - void PlaceAncre(); - - // Editing graphic items - LIB_DRAW_ITEM* CreateGraphicItem( LIB_COMPONENT* LibEntry, wxDC* DC ); - void GraphicItemBeginDraw( wxDC* DC ); - void StartMoveDrawSymbol( wxDC* DC ); - void EndDrawGraphicItem( wxDC* DC ); - void LoadOneSymbol(); - void SaveOneSymbol(); - void EditGraphicSymbol( wxDC* DC, - LIB_DRAW_ITEM* DrawItem ); - void EditSymbolText( wxDC* DC, LIB_DRAW_ITEM* DrawItem ); - void RotateSymbolText( wxDC* DC ); - void DeleteDrawPoly( wxDC* DC ); - LIB_DRAW_ITEM* LocateItemUsingCursor(); - void RotateField( wxDC* DC, LIB_FIELD* Field ); - void PlaceField( wxDC* DC, LIB_FIELD* Field ); - void EditField( wxDC* DC, LIB_FIELD* Field ); - void StartMoveField( wxDC* DC, LIB_FIELD* field ); - -public: - /* Block commands: */ - int ReturnBlockCommand( int key ); - void HandleBlockPlace( wxDC* DC ); - int HandleBlockEnd( wxDC* DC ); - - void PlacePin( wxDC* DC ); - void GlobalSetPins( wxDC* DC, LIB_PIN* MasterPin, int id ); - - // Automatic placement of pins - void RepeatPinItem( wxDC* DC, LIB_PIN* Pin ); - -protected: - wxString m_ConfigPath; - wxString m_LastLibImportPath; - wxString m_LastLibExportPath; - - /** Convert of the item currently being drawn. */ - bool m_drawSpecificConvert; - - /** - * Specify which component parts the current draw item applies to. - * - * If true, the item being drawn or edited applies only to the selected - * part. Otherwise it applies to all parts in the component. - */ - bool m_drawSpecificUnit; - - /** The current draw or edit graphic item fill style. */ - static FILL_T m_drawFillStyle; - - /** Default line width for drawing or editing graphic items. */ - static int m_drawLineWidth; - - /** The current active libary. NULL if no active library is selected. */ - static CMP_LIBRARY* m_library; - /** The current component being edited. NULL if no component is selected. */ - static LIB_COMPONENT* m_component; - - static LIB_DRAW_ITEM* m_lastDrawItem; - static LIB_DRAW_ITEM* m_drawItem; - static wxString m_aliasName; - - // The unit number to edit and show - static int m_unit; - - // Show the normal shape ( m_convert <= 1 ) or the converted shape - // ( m_convert > 1 ) - static int m_convert; - - // true to force DeMorgan/normal tools selection enabled. - // They are enabled when the loaded component has - // Graphic items for converted shape - // But under some circumstances (New component created) - // these tools must left enable - static bool m_showDeMorgan; - - /// The current text size setting. - static int m_textSize; - - /// Current text orientation setting. - static int m_textOrientation; - - static wxSize m_clientSize; - - friend class Dialog_BodyGraphicText_Properties; - - DECLARE_EVENT_TABLE() -}; - -#endif /* __LIBEDITFRM_H__ */ +/*****************************/ +/* class WinEDA_LibeditFrame */ +/*****************************/ + +#ifndef __LIBEDITFRM_H__ +#define __LIBEDITFRM_H__ + +#include "wxstruct.h" + + +class SCH_SCREEN; +class CMP_LIBRARY; +class LIB_COMPONENT; +class LIB_ALIAS; +class LIB_DRAW_ITEM; +class WinEDA_bodygraphics_PropertiesFrame; +class Dialog_BodyGraphicText_Properties; + + +/** + * The component library editor main window. + */ +class WinEDA_LibeditFrame : public WinEDA_DrawFrame +{ +public: + WinEDAChoiceBox* m_SelpartBox; // a Box to select a part to edit (if any) + WinEDAChoiceBox* m_SelAliasBox; // a box to select the alias to edit (if any) + +public: + WinEDA_LibeditFrame( wxWindow* father, + const wxString& title, + const wxPoint& pos, const wxSize& size, + long style = KICAD_DEFAULT_DRAWFRAME_STYLE ); + + ~WinEDA_LibeditFrame(); + + /** Function EnsureActiveLibExists + * Must be called after the libraries are reloaded + * (for instance after loading a schematic project) + */ + static void EnsureActiveLibExists(); + + void Process_Special_Functions( wxCommandEvent& event ); + void OnImportPart( wxCommandEvent& event ); + void OnExportPart( wxCommandEvent& event ); + void OnSelectAlias( wxCommandEvent& event ); + void OnSelectPart( wxCommandEvent& event ); + void DeleteOnePart( wxCommandEvent& event ); + void CreateNewLibraryPart( wxCommandEvent& event ); + void OnEditComponentProperties( wxCommandEvent& event ); + void InstallFieldsEditorDialog( wxCommandEvent& event ); + void LoadOneLibraryPart( wxCommandEvent& event ); + void OnViewEntryDoc( wxCommandEvent& event ); + void OnCheckComponent( wxCommandEvent& event ); + void OnSelectBodyStyle( wxCommandEvent& event ); + void OnEditPin( wxCommandEvent& event ); + void OnRotatePin( wxCommandEvent& event ); + + void OnUpdateEditingPart( wxUpdateUIEvent& event ); + void OnUpdateNotEditingPart( wxUpdateUIEvent& event ); + void OnUpdateUndo( wxUpdateUIEvent& event ); + void OnUpdateRedo( wxUpdateUIEvent& event ); + void OnUpdateSaveCurrentLib( wxUpdateUIEvent& event ); + void OnUpdateViewDoc( wxUpdateUIEvent& event ); + void OnUpdatePinByPin( wxUpdateUIEvent& event ); + void OnUpdatePartNumber( wxUpdateUIEvent& event ); + void OnUpdateDeMorganNormal( wxUpdateUIEvent& event ); + void OnUpdateDeMorganConvert( wxUpdateUIEvent& event ); + void OnUpdateSelectAlias( wxUpdateUIEvent& event ); + + void UpdateAliasSelectList(); + void UpdatePartSelectList(); + void DisplayLibInfos(); + void RedrawActiveWindow( wxDC* DC, bool EraseBg ); + void OnCloseWindow( wxCloseEvent& Event ); + void ReCreateHToolbar(); + void ReCreateVToolbar(); + void OnLeftClick( wxDC* DC, const wxPoint& MousePos ); + bool OnRightClick( const wxPoint& MousePos, wxMenu* PopMenu ); + int BestZoom(); // Returns the best zoom + void OnLeftDClick( wxDC* DC, const wxPoint& MousePos ); + + SCH_SCREEN* GetScreen() { return (SCH_SCREEN*) GetBaseScreen(); } + void OnHotKey( wxDC* DC, int hotkey, + EDA_BaseStruct* DrawStruct ); + + void GeneralControle( wxDC* DC, + wxPoint MousePositionInPixels ); + + void LoadSettings(); + void SaveSettings(); + + LIB_COMPONENT* GetComponent( void ) { return m_component; } + + CMP_LIBRARY* GetLibrary( void ) { return m_library; } + + wxString& GetAliasName( void ) { return m_aliasName; } + + int GetUnit( void ) { return m_unit; } + + void SetUnit( int unit ) + { + wxASSERT( unit >= 1 ); + m_unit = unit; + } + + + int GetConvert( void ) { return m_convert; } + + void SetConvert( int convert ) + { + wxASSERT( convert >= 0 ); + m_convert = convert; + } + + + LIB_DRAW_ITEM* GetLastDrawItem( void ) { return m_lastDrawItem; } + + void SetLastDrawItem( LIB_DRAW_ITEM* drawItem ) + { + m_lastDrawItem = drawItem; + } + + + LIB_DRAW_ITEM* GetDrawItem( void ) { return m_drawItem; } + + void SetDrawItem( LIB_DRAW_ITEM* drawItem ); + + bool GetShowDeMorgan( void ) { return m_showDeMorgan; } + + void SetShowDeMorgan( bool show ) { m_showDeMorgan = show; } + + FILL_T GetFillStyle( void ) { return m_drawFillStyle; } + +private: + + /** OnActivate event funtion( virtual ) + */ + virtual void OnActivate( wxActivateEvent& event ); + + // General: + void SaveOnePartInMemory(); + void SelectActiveLibrary(); + void SaveActiveLibrary( wxCommandEvent& event ); + + bool LoadOneLibraryPartAux( CMP_LIB_ENTRY* LibEntry, + CMP_LIBRARY* Library ); + + void DisplayCmpDoc(); + void EditComponentProperties(); + + // General editing +public: + void SaveCopyInUndoList( EDA_BaseStruct* ItemToCopy, + int flag_type_command = 0 ); + +private: + void GetComponentFromUndoList( wxCommandEvent& event ); + void GetComponentFromRedoList( wxCommandEvent& event ); + + // Editing pins + void CreatePin( wxDC* DC ); + void DeletePin( wxDC* DC, + LIB_COMPONENT* LibEntry, + LIB_PIN* Pin ); + void StartMovePin( wxDC* DC ); + + // Editing anchor + void PlaceAncre(); + + // Editing graphic items + LIB_DRAW_ITEM* CreateGraphicItem( LIB_COMPONENT* LibEntry, wxDC* DC ); + void GraphicItemBeginDraw( wxDC* DC ); + void StartMoveDrawSymbol( wxDC* DC ); + void StartModifyDrawSymbol( wxDC* DC ); // 1 ) + static int m_convert; + + // true to force DeMorgan/normal tools selection enabled. + // They are enabled when the loaded component has + // Graphic items for converted shape + // But under some circumstances (New component created) + // these tools must left enable + static bool m_showDeMorgan; + + /// The current text size setting. + static int m_textSize; + + /// Current text orientation setting. + static int m_textOrientation; + + static wxSize m_clientSize; + + friend class Dialog_BodyGraphicText_Properties; + + DECLARE_EVENT_TABLE() +}; + +#endif /* __LIBEDITFRM_H__ */ diff --git a/eeschema/libframe.cpp b/eeschema/libframe.cpp index 4f1a3cc14f..45bac8475a 100644 --- a/eeschema/libframe.cpp +++ b/eeschema/libframe.cpp @@ -42,123 +42,123 @@ int CreateNewLibAndSavePartId = ::wxNewId(); * making it necessary to use the class access methods. */ LIB_COMPONENT* WinEDA_LibeditFrame::m_component = NULL; -CMP_LIBRARY* WinEDA_LibeditFrame::m_library = NULL; +CMP_LIBRARY* WinEDA_LibeditFrame:: m_library = NULL; -wxString WinEDA_LibeditFrame::m_aliasName; -int WinEDA_LibeditFrame::m_unit = 1; -int WinEDA_LibeditFrame::m_convert = 1; -LIB_DRAW_ITEM* WinEDA_LibeditFrame::m_lastDrawItem = NULL; -LIB_DRAW_ITEM* WinEDA_LibeditFrame::m_drawItem = NULL; -bool WinEDA_LibeditFrame::m_showDeMorgan = false; -wxSize WinEDA_LibeditFrame::m_clientSize = wxSize( -1, -1 ); -int WinEDA_LibeditFrame::m_textSize = DEFAULT_SIZE_TEXT; -int WinEDA_LibeditFrame::m_textOrientation = TEXT_ORIENT_HORIZ; -int WinEDA_LibeditFrame::m_drawLineWidth = 0; -FILL_T WinEDA_LibeditFrame::m_drawFillStyle = NO_FILL; +wxString WinEDA_LibeditFrame:: m_aliasName; +int WinEDA_LibeditFrame:: m_unit = 1; +int WinEDA_LibeditFrame:: m_convert = 1; +LIB_DRAW_ITEM* WinEDA_LibeditFrame::m_lastDrawItem = NULL; +LIB_DRAW_ITEM* WinEDA_LibeditFrame::m_drawItem = NULL; +bool WinEDA_LibeditFrame:: m_showDeMorgan = false; +wxSize WinEDA_LibeditFrame:: m_clientSize = wxSize( -1, -1 ); +int WinEDA_LibeditFrame:: m_textSize = DEFAULT_SIZE_TEXT; +int WinEDA_LibeditFrame:: m_textOrientation = TEXT_ORIENT_HORIZ; +int WinEDA_LibeditFrame:: m_drawLineWidth = 0; +FILL_T WinEDA_LibeditFrame:: m_drawFillStyle = NO_FILL; /*****************************/ /* class WinEDA_LibeditFrame */ /*****************************/ BEGIN_EVENT_TABLE( WinEDA_LibeditFrame, WinEDA_DrawFrame ) - EVT_CLOSE( WinEDA_LibeditFrame::OnCloseWindow ) - EVT_SIZE( WinEDA_LibeditFrame::OnSize ) - EVT_ACTIVATE( WinEDA_LibeditFrame::OnActivate ) +EVT_CLOSE( WinEDA_LibeditFrame::OnCloseWindow ) +EVT_SIZE( WinEDA_LibeditFrame::OnSize ) +EVT_ACTIVATE( WinEDA_LibeditFrame::OnActivate ) /* Main horizontal toolbar. */ - EVT_TOOL_RANGE( ID_ZOOM_IN, ID_ZOOM_PAGE, WinEDA_LibeditFrame::OnZoom ) - EVT_TOOL( ID_LIBEDIT_SAVE_CURRENT_LIB, - WinEDA_LibeditFrame::SaveActiveLibrary ) - EVT_TOOL( ID_LIBEDIT_SELECT_CURRENT_LIB, - WinEDA_LibeditFrame::Process_Special_Functions ) - EVT_TOOL( ID_LIBEDIT_DELETE_PART, - WinEDA_LibeditFrame::DeleteOnePart ) - EVT_TOOL( ID_LIBEDIT_NEW_PART, - WinEDA_LibeditFrame::CreateNewLibraryPart ) - EVT_TOOL( ID_LIBEDIT_SELECT_PART, - WinEDA_LibeditFrame::LoadOneLibraryPart ) - EVT_TOOL( ID_LIBEDIT_SAVE_CURRENT_PART, - WinEDA_LibeditFrame::Process_Special_Functions ) - EVT_TOOL( wxID_UNDO, - WinEDA_LibeditFrame::GetComponentFromUndoList ) - EVT_TOOL( wxID_REDO, - WinEDA_LibeditFrame::GetComponentFromRedoList ) - EVT_TOOL( ID_LIBEDIT_GET_FRAME_EDIT_PART, - WinEDA_LibeditFrame::OnEditComponentProperties ) - EVT_TOOL( ID_LIBEDIT_GET_FRAME_EDIT_FIELDS, - WinEDA_LibeditFrame::InstallFieldsEditorDialog ) - EVT_TOOL( ID_LIBEDIT_CHECK_PART, - WinEDA_LibeditFrame::OnCheckComponent ) - EVT_TOOL( ID_DE_MORGAN_NORMAL_BUTT, - WinEDA_LibeditFrame::OnSelectBodyStyle ) - EVT_TOOL( ID_DE_MORGAN_CONVERT_BUTT, - WinEDA_LibeditFrame::OnSelectBodyStyle ) - EVT_TOOL( ID_LIBEDIT_VIEW_DOC, - WinEDA_LibeditFrame::OnViewEntryDoc ) - EVT_TOOL( ID_LIBEDIT_EDIT_PIN_BY_PIN, - WinEDA_LibeditFrame::Process_Special_Functions ) - EVT_TOOL( ExportPartId, WinEDA_LibeditFrame::OnExportPart ) - EVT_TOOL( CreateNewLibAndSavePartId, WinEDA_LibeditFrame::OnExportPart ) - EVT_TOOL( ImportPartId, WinEDA_LibeditFrame::OnImportPart ) +EVT_TOOL_RANGE( ID_ZOOM_IN, ID_ZOOM_PAGE, WinEDA_LibeditFrame::OnZoom ) +EVT_TOOL( ID_LIBEDIT_SAVE_CURRENT_LIB, + WinEDA_LibeditFrame::SaveActiveLibrary ) +EVT_TOOL( ID_LIBEDIT_SELECT_CURRENT_LIB, + WinEDA_LibeditFrame::Process_Special_Functions ) +EVT_TOOL( ID_LIBEDIT_DELETE_PART, + WinEDA_LibeditFrame::DeleteOnePart ) +EVT_TOOL( ID_LIBEDIT_NEW_PART, + WinEDA_LibeditFrame::CreateNewLibraryPart ) +EVT_TOOL( ID_LIBEDIT_SELECT_PART, + WinEDA_LibeditFrame::LoadOneLibraryPart ) +EVT_TOOL( ID_LIBEDIT_SAVE_CURRENT_PART, + WinEDA_LibeditFrame::Process_Special_Functions ) +EVT_TOOL( wxID_UNDO, + WinEDA_LibeditFrame::GetComponentFromUndoList ) +EVT_TOOL( wxID_REDO, + WinEDA_LibeditFrame::GetComponentFromRedoList ) +EVT_TOOL( ID_LIBEDIT_GET_FRAME_EDIT_PART, + WinEDA_LibeditFrame::OnEditComponentProperties ) +EVT_TOOL( ID_LIBEDIT_GET_FRAME_EDIT_FIELDS, + WinEDA_LibeditFrame::InstallFieldsEditorDialog ) +EVT_TOOL( ID_LIBEDIT_CHECK_PART, + WinEDA_LibeditFrame::OnCheckComponent ) +EVT_TOOL( ID_DE_MORGAN_NORMAL_BUTT, + WinEDA_LibeditFrame::OnSelectBodyStyle ) +EVT_TOOL( ID_DE_MORGAN_CONVERT_BUTT, + WinEDA_LibeditFrame::OnSelectBodyStyle ) +EVT_TOOL( ID_LIBEDIT_VIEW_DOC, + WinEDA_LibeditFrame::OnViewEntryDoc ) +EVT_TOOL( ID_LIBEDIT_EDIT_PIN_BY_PIN, + WinEDA_LibeditFrame::Process_Special_Functions ) +EVT_TOOL( ExportPartId, WinEDA_LibeditFrame::OnExportPart ) +EVT_TOOL( CreateNewLibAndSavePartId, WinEDA_LibeditFrame::OnExportPart ) +EVT_TOOL( ImportPartId, WinEDA_LibeditFrame::OnImportPart ) - EVT_KICAD_CHOICEBOX( ID_LIBEDIT_SELECT_PART_NUMBER, - WinEDA_LibeditFrame::OnSelectPart ) - EVT_KICAD_CHOICEBOX( ID_LIBEDIT_SELECT_ALIAS, - WinEDA_LibeditFrame::OnSelectAlias ) +EVT_KICAD_CHOICEBOX( ID_LIBEDIT_SELECT_PART_NUMBER, + WinEDA_LibeditFrame::OnSelectPart ) +EVT_KICAD_CHOICEBOX( ID_LIBEDIT_SELECT_ALIAS, + WinEDA_LibeditFrame::OnSelectAlias ) /* Right vertical toolbar. */ - EVT_TOOL( ID_NO_SELECT_BUTT, WinEDA_LibeditFrame::Process_Special_Functions ) - EVT_TOOL_RANGE( ID_LIBEDIT_PIN_BUTT, ID_LIBEDIT_EXPORT_BODY_BUTT, - WinEDA_LibeditFrame::Process_Special_Functions ) +EVT_TOOL( ID_NO_SELECT_BUTT, WinEDA_LibeditFrame::Process_Special_Functions ) +EVT_TOOL_RANGE( ID_LIBEDIT_PIN_BUTT, ID_LIBEDIT_EXPORT_BODY_BUTT, + WinEDA_LibeditFrame::Process_Special_Functions ) /* Context menu events and commands. */ - EVT_MENU( ID_LIBEDIT_EDIT_PIN, WinEDA_LibeditFrame::OnEditPin ) +EVT_MENU( ID_LIBEDIT_EDIT_PIN, WinEDA_LibeditFrame::OnEditPin ) - EVT_MENU( ID_LIBEDIT_ROTATE_PIN, WinEDA_LibeditFrame::OnRotatePin ) +EVT_MENU( ID_LIBEDIT_ROTATE_PIN, WinEDA_LibeditFrame::OnRotatePin ) - EVT_MENU_RANGE( ID_POPUP_LIBEDIT_PIN_GLOBAL_CHANGE_ITEM, - ID_POPUP_LIBEDIT_ROTATE_GRAPHIC_TEXT, - WinEDA_LibeditFrame::Process_Special_Functions ) +EVT_MENU_RANGE( ID_POPUP_LIBEDIT_PIN_GLOBAL_CHANGE_ITEM, + ID_POPUP_LIBEDIT_ROTATE_GRAPHIC_TEXT, + WinEDA_LibeditFrame::Process_Special_Functions ) - EVT_MENU_RANGE( ID_POPUP_GENERAL_START_RANGE, ID_POPUP_GENERAL_END_RANGE, - WinEDA_LibeditFrame::Process_Special_Functions ) +EVT_MENU_RANGE( ID_POPUP_GENERAL_START_RANGE, ID_POPUP_GENERAL_END_RANGE, + WinEDA_LibeditFrame::Process_Special_Functions ) /* Update user interface elements. */ - EVT_UPDATE_UI( ExportPartId, WinEDA_LibeditFrame::OnUpdateEditingPart ) - EVT_UPDATE_UI( CreateNewLibAndSavePartId, - WinEDA_LibeditFrame::OnUpdateEditingPart ) - EVT_UPDATE_UI( ID_LIBEDIT_SAVE_CURRENT_PART, - WinEDA_LibeditFrame::OnUpdateEditingPart ) - EVT_UPDATE_UI( ID_LIBEDIT_GET_FRAME_EDIT_FIELDS, - WinEDA_LibeditFrame::OnUpdateEditingPart ) - EVT_UPDATE_UI( ID_LIBEDIT_CHECK_PART, - WinEDA_LibeditFrame::OnUpdateEditingPart ) - EVT_UPDATE_UI( wxID_UNDO, WinEDA_LibeditFrame::OnUpdateUndo ) - EVT_UPDATE_UI( wxID_REDO, WinEDA_LibeditFrame::OnUpdateRedo ) - EVT_UPDATE_UI( ID_LIBEDIT_SAVE_CURRENT_LIB, - WinEDA_LibeditFrame::OnUpdateSaveCurrentLib ) - EVT_UPDATE_UI( ID_LIBEDIT_VIEW_DOC, WinEDA_LibeditFrame::OnUpdateViewDoc ) - EVT_UPDATE_UI( ID_LIBEDIT_EDIT_PIN_BY_PIN, - WinEDA_LibeditFrame::OnUpdatePinByPin ) - EVT_UPDATE_UI( ID_LIBEDIT_SELECT_PART_NUMBER, - WinEDA_LibeditFrame::OnUpdatePartNumber ) - EVT_UPDATE_UI( ID_LIBEDIT_SELECT_ALIAS, - WinEDA_LibeditFrame::OnUpdateSelectAlias ) - EVT_UPDATE_UI( ID_DE_MORGAN_NORMAL_BUTT, - WinEDA_LibeditFrame::OnUpdateDeMorganNormal ) - EVT_UPDATE_UI( ID_DE_MORGAN_CONVERT_BUTT, - WinEDA_LibeditFrame::OnUpdateDeMorganConvert ) - EVT_UPDATE_UI_RANGE( ID_LIBEDIT_PIN_BUTT, ID_LIBEDIT_EXPORT_BODY_BUTT, - WinEDA_LibeditFrame::OnUpdateEditingPart ) +EVT_UPDATE_UI( ExportPartId, WinEDA_LibeditFrame::OnUpdateEditingPart ) +EVT_UPDATE_UI( CreateNewLibAndSavePartId, + WinEDA_LibeditFrame::OnUpdateEditingPart ) +EVT_UPDATE_UI( ID_LIBEDIT_SAVE_CURRENT_PART, + WinEDA_LibeditFrame::OnUpdateEditingPart ) +EVT_UPDATE_UI( ID_LIBEDIT_GET_FRAME_EDIT_FIELDS, + WinEDA_LibeditFrame::OnUpdateEditingPart ) +EVT_UPDATE_UI( ID_LIBEDIT_CHECK_PART, + WinEDA_LibeditFrame::OnUpdateEditingPart ) +EVT_UPDATE_UI( wxID_UNDO, WinEDA_LibeditFrame::OnUpdateUndo ) +EVT_UPDATE_UI( wxID_REDO, WinEDA_LibeditFrame::OnUpdateRedo ) +EVT_UPDATE_UI( ID_LIBEDIT_SAVE_CURRENT_LIB, + WinEDA_LibeditFrame::OnUpdateSaveCurrentLib ) +EVT_UPDATE_UI( ID_LIBEDIT_VIEW_DOC, WinEDA_LibeditFrame::OnUpdateViewDoc ) +EVT_UPDATE_UI( ID_LIBEDIT_EDIT_PIN_BY_PIN, + WinEDA_LibeditFrame::OnUpdatePinByPin ) +EVT_UPDATE_UI( ID_LIBEDIT_SELECT_PART_NUMBER, + WinEDA_LibeditFrame::OnUpdatePartNumber ) +EVT_UPDATE_UI( ID_LIBEDIT_SELECT_ALIAS, + WinEDA_LibeditFrame::OnUpdateSelectAlias ) +EVT_UPDATE_UI( ID_DE_MORGAN_NORMAL_BUTT, + WinEDA_LibeditFrame::OnUpdateDeMorganNormal ) +EVT_UPDATE_UI( ID_DE_MORGAN_CONVERT_BUTT, + WinEDA_LibeditFrame::OnUpdateDeMorganConvert ) +EVT_UPDATE_UI_RANGE( ID_LIBEDIT_PIN_BUTT, ID_LIBEDIT_EXPORT_BODY_BUTT, + WinEDA_LibeditFrame::OnUpdateEditingPart ) END_EVENT_TABLE() -WinEDA_LibeditFrame::WinEDA_LibeditFrame( wxWindow* father, +WinEDA_LibeditFrame::WinEDA_LibeditFrame( wxWindow* father, const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style ) : + const wxPoint& pos, + const wxSize& size, + long style ) : WinEDA_DrawFrame( father, LIBEDITOR_FRAME, title, pos, size, style ) { m_FrameName = wxT( "LibeditFrame" ); @@ -212,17 +212,17 @@ WinEDA_LibeditFrame::WinEDA_LibeditFrame( wxWindow* father, horiz.LeftDockable( false ).RightDockable( false ); m_auimgr.AddPane( m_HToolBar, - wxAuiPaneInfo( horiz ).Name( wxT( "m_HToolBar" ) ).Top(). - Row( 0 ) ); + wxAuiPaneInfo( horiz ).Name( wxT( "m_HToolBar" ) ).Top(). + Row( 0 ) ); m_auimgr.AddPane( m_VToolBar, - wxAuiPaneInfo( vert ).Name( wxT( "m_VToolBar" ) ).Right() ); + wxAuiPaneInfo( vert ).Name( wxT( "m_VToolBar" ) ).Right() ); m_auimgr.AddPane( DrawPanel, - wxAuiPaneInfo().Name( wxT( "DrawFrame" ) ).CentrePane() ); + wxAuiPaneInfo().Name( wxT( "DrawFrame" ) ).CentrePane() ); m_auimgr.AddPane( MsgPanel, - wxAuiPaneInfo( horiz ).Name( wxT( "MsgPanel" ) ).Bottom() ); + wxAuiPaneInfo( horiz ).Name( wxT( "MsgPanel" ) ).Bottom() ); m_auimgr.Update(); #endif } @@ -302,7 +302,7 @@ void WinEDA_LibeditFrame::OnCloseWindow( wxCloseEvent& Event ) { wxString msg; msg.Printf( _( "Library \"%s\" was modified!\nDiscard changes?" ), - GetChars( lib.GetName() ) ); + GetChars( lib.GetName() ) ); if( !IsOK( this, msg ) ) { Event.Veto(); @@ -360,9 +360,9 @@ int WinEDA_LibeditFrame::BestZoom() size -= wxSize( 25, 25 ); // reserve 100 mils margin ii = wxRound( ( (double) dx / (double) size.x ) * - (double) GetScreen()->m_ZoomScalar ); + (double) GetScreen()->m_ZoomScalar ); jj = wxRound( ( (double) dy / (double) size.y ) * - (double) GetScreen()->m_ZoomScalar ); + (double) GetScreen()->m_ZoomScalar ); return MAX( ii + 1, jj + 1 ); } @@ -449,7 +449,7 @@ void WinEDA_LibeditFrame::OnUpdateRedo( wxUpdateUIEvent& event ) void WinEDA_LibeditFrame::OnUpdateSaveCurrentLib( wxUpdateUIEvent& event ) { event.Enable( m_library != NULL - && ( m_library->IsModified()|| GetScreen()->IsModify() ) ); + && ( m_library->IsModified()|| GetScreen()->IsModify() ) ); } @@ -479,7 +479,7 @@ void WinEDA_LibeditFrame::OnUpdateViewDoc( wxUpdateUIEvent& event ) void WinEDA_LibeditFrame::OnUpdatePinByPin( wxUpdateUIEvent& event ) { event.Enable( ( m_component != NULL ) - && ( ( m_component->GetPartCount() > 1 ) || m_showDeMorgan ) ); + && ( ( m_component->GetPartCount() > 1 ) || m_showDeMorgan ) ); if( m_HToolBar ) m_HToolBar->ToggleTool( event.GetId(), g_EditPinByPinIsOn ); @@ -504,7 +504,7 @@ void WinEDA_LibeditFrame::OnUpdateDeMorganNormal( wxUpdateUIEvent& event ) return; event.Enable( GetShowDeMorgan() - || ( m_component && m_component->HasConversion() ) ); + || ( m_component && m_component->HasConversion() ) ); m_HToolBar->ToggleTool( event.GetId(), m_convert <= 1 ); } @@ -515,7 +515,7 @@ void WinEDA_LibeditFrame::OnUpdateDeMorganConvert( wxUpdateUIEvent& event ) return; event.Enable( GetShowDeMorgan() - || ( m_component && m_component->HasConversion() ) ); + || ( m_component && m_component->HasConversion() ) ); m_HToolBar->ToggleTool( event.GetId(), m_convert > 1 ); } @@ -588,7 +588,7 @@ void WinEDA_LibeditFrame::OnViewEntryDoc( wxCommandEvent& event ) if( !fileName.IsEmpty() ) GetAssociatedDocument( this, fileName, - &wxGetApp().GetLibraryPathList() ); + &wxGetApp().GetLibraryPathList() ); } @@ -608,8 +608,8 @@ void WinEDA_LibeditFrame::OnSelectBodyStyle( wxCommandEvent& event ) void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event ) { - int id = event.GetId(); - wxPoint pos; + int id = event.GetId(); + wxPoint pos; DrawPanel->m_IgnoreMouseEvents = true; @@ -638,13 +638,13 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event ) case ID_POPUP_LIBEDIT_CANCEL_EDITING: if( DrawPanel->ManageCurseur && DrawPanel->ForceCloseManageCurseur ) - DrawPanel->UnManageCursor( ); + DrawPanel->UnManageCursor(); else DrawPanel->UnManageCursor( 0, wxCURSOR_ARROW ); break; case ID_POPUP_LIBEDIT_DELETE_ITEM: - DrawPanel->UnManageCursor( ); + DrawPanel->UnManageCursor(); break; default: @@ -653,6 +653,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event ) } INSTALL_DC( dc, DrawPanel ); + switch( id ) { case ID_POPUP_LIBEDIT_CANCEL_EDITING: @@ -815,6 +816,24 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event ) StartMoveDrawSymbol( &dc ); break; + case ID_POPUP_LIBEDIT_MODIFY_ITEM: + + if( m_drawItem == NULL ) + break; + + DrawPanel->MouseToCursorSchema(); + if( m_drawItem->Type() == COMPONENT_RECT_DRAW_TYPE + || m_drawItem->Type() == COMPONENT_CIRCLE_DRAW_TYPE + || m_drawItem->Type() == COMPONENT_POLYLINE_DRAW_TYPE + || m_drawItem->Type() == COMPONENT_ARC_DRAW_TYPE + ) + { + SaveCopyInUndoList( m_component ); + StartModifyDrawSymbol( &dc ); + } + + break; + case ID_POPUP_LIBEDIT_ROTATE_GRAPHIC_TEXT: if( m_drawItem == NULL ) break; @@ -904,7 +923,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event ) default: DisplayError( this, - wxT( "WinEDA_LibeditFrame::Process_Special_Functions error" ) ); + wxT( "WinEDA_LibeditFrame::Process_Special_Functions error" ) ); break; } @@ -914,6 +933,7 @@ void WinEDA_LibeditFrame::Process_Special_Functions( wxCommandEvent& event ) m_lastDrawItem = NULL; } + /** Called on activate the frame. * Test if the current library exists * the library list can be changed by the schematic editor after reloading a new schematic @@ -928,13 +948,14 @@ void WinEDA_LibeditFrame::OnActivate( wxActivateEvent& event ) EnsureActiveLibExists(); } + void WinEDA_LibeditFrame::EnsureActiveLibExists() { if( m_library == NULL ) return; bool exists = CMP_LIBRARY::LibraryExists( m_library ); - if ( exists ) + if( exists ) return; else m_library = NULL; diff --git a/eeschema/onrightclick.cpp b/eeschema/onrightclick.cpp index b96d5ab106..138273b7ef 100644 --- a/eeschema/onrightclick.cpp +++ b/eeschema/onrightclick.cpp @@ -247,7 +247,7 @@ void AddMenusForComponentField( wxMenu* PopMenu, SCH_FIELD* Field ) } msg = AddHotkeyName( _( "Rotate Field" ), - s_Schematic_Hokeys_Descr, HK_ROTATE_COMPONENT_OR_ITEM ); + s_Schematic_Hokeys_Descr, HK_ROTATE ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_ROTATE_FIELD, msg, rotate_field_xpm ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_EDIT_FIELD, @@ -285,14 +285,14 @@ void AddMenusForComponent( wxMenu* PopMenu, SCH_COMPONENT* Component ) ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_CMP_REQUEST, msg, move_xpm ); msg = AddHotkeyName( _( "Drag Component" ), s_Schematic_Hokeys_Descr, - HK_DRAG_COMPONENT ); + HK_DRAG ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_DRAG_CMP_REQUEST, msg, move_xpm ); } wxMenu* orientmenu = new wxMenu; msg = AddHotkeyName( _( "Rotate +" ), s_Schematic_Hokeys_Descr, - HK_ROTATE_COMPONENT_OR_ITEM ); + HK_ROTATE ); ADD_MENUITEM( orientmenu, ID_POPUP_SCH_ROTATE_CMP_COUNTERCLOCKWISE, msg, rotate_pos_xpm ); ADD_MENUITEM( orientmenu, ID_POPUP_SCH_ROTATE_CMP_CLOCKWISE, @@ -312,7 +312,7 @@ void AddMenusForComponent( wxMenu* PopMenu, SCH_COMPONENT* Component ) wxMenu* editmenu = new wxMenu; msg = AddHotkeyName( _( "Edit" ), s_Schematic_Hokeys_Descr, - HK_EDIT_COMPONENT_OR_LABEL ); + HK_EDIT ); ADD_MENUITEM( editmenu, ID_POPUP_SCH_EDIT_CMP, msg, edit_component_xpm ); @@ -393,11 +393,11 @@ void AddMenusForGLabel( wxMenu* PopMenu, SCH_GLOBALLABEL* GLabel ) msg, copy_button ); } msg = AddHotkeyName( _( "Rotate Global Label" ), s_Schematic_Hokeys_Descr, - HK_ROTATE_COMPONENT_OR_ITEM ); + HK_ROTATE ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_ROTATE_TEXT, msg, rotate_glabel_xpm ); msg = AddHotkeyName( _( "Edit Global Label" ), s_Schematic_Hokeys_Descr, - HK_EDIT_COMPONENT_OR_LABEL ); + HK_EDIT ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_EDIT_TEXT, msg, edit_text_xpm ); msg = AddHotkeyName( _( "Delete Global Label" ), s_Schematic_Hokeys_Descr, @@ -437,11 +437,11 @@ void AddMenusForHLabel( wxMenu* PopMenu, SCH_HIERLABEL* HLabel ) msg, copy_button ); } msg = AddHotkeyName( _( "Rotate Hierarchical Label" ), s_Schematic_Hokeys_Descr, - HK_ROTATE_COMPONENT_OR_ITEM ); + HK_ROTATE ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_ROTATE_TEXT, _( "Rotate Hierarchical Label" ), rotate_glabel_xpm ); msg = AddHotkeyName( _( "Edit Hierarchical Label" ), s_Schematic_Hokeys_Descr, - HK_EDIT_COMPONENT_OR_LABEL ); + HK_EDIT ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_EDIT_TEXT, _( "Edit Hierarchical Label" ), edit_text_xpm ); msg = AddHotkeyName( _( "Delete Hierarchical Label" ), s_Schematic_Hokeys_Descr, @@ -480,11 +480,11 @@ void AddMenusForLabel( wxMenu* PopMenu, SCH_LABEL* Label ) msg, copy_button ); } msg = AddHotkeyName( _( "Rotate Label" ), s_Schematic_Hokeys_Descr, - HK_ROTATE_COMPONENT_OR_ITEM ); + HK_ROTATE ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_ROTATE_TEXT, msg, rotate_pos_xpm ); msg = AddHotkeyName( _( "Edit Label" ), s_Schematic_Hokeys_Descr, - HK_EDIT_COMPONENT_OR_LABEL ); + HK_EDIT ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_EDIT_TEXT, msg, edit_text_xpm ); msg = AddHotkeyName( _( "Delete Label" ), s_Schematic_Hokeys_Descr, @@ -524,11 +524,11 @@ void AddMenusForText( wxMenu* PopMenu, SCH_TEXT* Text ) msg, copy_button ); } msg = AddHotkeyName( _( "Rotate Text" ), s_Schematic_Hokeys_Descr, - HK_ROTATE_COMPONENT_OR_ITEM ); + HK_ROTATE ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_ROTATE_TEXT, msg, rotate_pos_xpm ); msg = AddHotkeyName( _( "Edit Text" ), s_Schematic_Hokeys_Descr, - HK_EDIT_COMPONENT_OR_LABEL ); + HK_EDIT ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_EDIT_TEXT, msg, edit_text_xpm ); msg = AddHotkeyName( _( "Delete Text" ), s_Schematic_Hokeys_Descr, @@ -601,7 +601,7 @@ void AddMenusForWire( wxMenu* PopMenu, SCH_LINE* Wire, } msg = AddHotkeyName( _( "Drag Wire" ), s_Schematic_Hokeys_Descr, - HK_DRAG_COMPONENT ); + HK_DRAG ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_DRAG_WIRE_REQUEST, msg, move_track_xpm ); PopMenu->AppendSeparator(); @@ -688,7 +688,7 @@ void AddMenusForHierchicalSheet( wxMenu* PopMenu, SCH_SHEET* Sheet ) else { msg = AddHotkeyName( _( "Edit Sheet" ), - s_Schematic_Hokeys_Descr, HK_EDIT_COMPONENT_OR_LABEL ); + s_Schematic_Hokeys_Descr, HK_EDIT ); ADD_MENUITEM( PopMenu, ID_POPUP_SCH_EDIT_SHEET, msg, edit_sheet_xpm ); diff --git a/eeschema/symbdraw.cpp b/eeschema/symbdraw.cpp index b1cc9a9828..15e54b121e 100644 --- a/eeschema/symbdraw.cpp +++ b/eeschema/symbdraw.cpp @@ -20,17 +20,44 @@ #include "class_libentry.h" #include "dialog_lib_edit_draw_item.h" +#include -static void SymbolDisplayDraw( WinEDA_DrawPanel* panel, wxDC* DC, bool erase ); -static void ComputeArc( LIB_ARC* DrawItem, wxPoint ArcCentre ); -static void RedrawWhileMovingCursor( WinEDA_DrawPanel* panel, - wxDC* DC, - bool erase ); +#define EraseItem( item ) item->Draw( Panel, DC, wxPoint( 0,\ + 0 ), -1, g_XorMode, NULL,\ + DefaultTransformMatrix ) +static void SymbolDisplayDraw( WinEDA_DrawPanel* panel, wxDC* DC, bool erase ); +static void ComputeArc( LIB_ARC* DrawItem, wxPoint ArcCentre ); +static void ComputeArcRadiusAngles( LIB_ARC* arc ); +static wxPoint ComputeCircumCenter( wxPoint A, wxPoint B, wxPoint C ); +static void RedrawWhileMovingCursor( WinEDA_DrawPanel* panel, + wxDC* DC, + bool erase ); -static int StateDrawArc, ArcStartX, ArcStartY, ArcEndX, ArcEndY; static wxPoint InitPosition, StartCursor, ItemPreviousPos; +typedef enum { + START_POINT, END_POINT, OUTLINE +} SelectedPoint; + +// Attributes of the arc in edit +static struct +{ + wxPoint startPoint, endPoint; //!< Start, end coordinates + int stateDrawArc; //!< The actual drawing state + double distanceCenter; //!< Distance from arc center to middle of start-/end-point + SelectedPoint selectedPoint; //!< The selected point while modifying + int direction; //!< Determines the side of the center point relative to start/end point +} arcState; + +// Structure for saving attributes before modifying graphics objects +static struct +{ + wxPoint startPoint; + wxPoint endPoint; + wxPoint centerPoint; + int radius; +} savedAttributes; /* * Show the dialog box for editing a graphical item properties @@ -40,33 +67,33 @@ void WinEDA_LibeditFrame::EditGraphicSymbol( wxDC* DC, LIB_DRAW_ITEM* DrawItem ) if( DrawItem == NULL ) return; - LIB_COMPONENT* component = DrawItem->GetParent(); + LIB_COMPONENT* component = DrawItem->GetParent(); - DIALOG_LIB_EDIT_DRAW_ITEM dlg( this, DrawItem->m_typeName ); + DIALOG_LIB_EDIT_DRAW_ITEM dialog( this, DrawItem->m_typeName ); - dlg.SetWidthUnits( ReturnUnitSymbol( g_UnitMetric ) ); + dialog.SetWidthUnits( ReturnUnitSymbol( g_UnitMetric ) ); wxString val = ReturnStringFromValue( g_UnitMetric, m_drawLineWidth, m_InternalUnits ); - dlg.SetWidth( val ); - dlg.SetApplyToAllUnits( !m_drawSpecificUnit ); - dlg.EnableApplyToAllUnits( component && component->GetPartCount() > 1 ); - dlg.SetApplyToAllConversions( !m_drawSpecificConvert ); - dlg.EnableApplyToAllConversions( component && component->HasConversion() ); - dlg.SetFillStyle( m_drawFillStyle ); - dlg.EnableFillStyle( DrawItem->IsFillable() ); + dialog.SetWidth( val ); + dialog.SetApplyToAllUnits( !m_drawSpecificUnit ); + dialog.EnableApplyToAllUnits( component && component->GetPartCount() > 1 ); + dialog.SetApplyToAllConversions( !m_drawSpecificConvert ); + dialog.EnableApplyToAllConversions( component && component->HasConversion() ); + dialog.SetFillStyle( m_drawFillStyle ); + dialog.EnableFillStyle( DrawItem->IsFillable() ); - if( dlg.ShowModal() == wxID_CANCEL ) + if( dialog.ShowModal() == wxID_CANCEL ) return; - val = dlg.GetWidth(); - m_drawLineWidth = ReturnValueFromString( g_UnitMetric, val, - m_InternalUnits ); - m_drawSpecificConvert = !dlg.GetApplyToAllConversions(); - m_drawSpecificUnit = !dlg.GetApplyToAllUnits(); + val = dialog.GetWidth(); + m_drawLineWidth = ReturnValueFromString( g_UnitMetric, val, + m_InternalUnits ); + m_drawSpecificConvert = !dialog.GetApplyToAllConversions(); + m_drawSpecificUnit = !dialog.GetApplyToAllUnits(); if( DrawItem->IsFillable() ) - m_drawFillStyle = (FILL_T) dlg.GetFillStyle(); + m_drawFillStyle = (FILL_T) dialog.GetFillStyle(); // Save copy for undo is done before place. if( !( DrawItem->m_Flags & IS_NEW ) ) @@ -98,16 +125,16 @@ void WinEDA_LibeditFrame::EditGraphicSymbol( wxDC* DC, LIB_DRAW_ITEM* DrawItem ) static void AbortSymbolTraceOn( WinEDA_DrawPanel* Panel, wxDC* DC ) { - LIB_DRAW_ITEM* item; - WinEDA_LibeditFrame* parent = ( WinEDA_LibeditFrame* ) Panel->GetParent(); + LIB_DRAW_ITEM* item; + WinEDA_LibeditFrame* parent = (WinEDA_LibeditFrame*) Panel->GetParent(); item = parent->GetDrawItem(); if( item == NULL ) return; - StateDrawArc = 0; - Panel->ManageCurseur = NULL; + arcState.stateDrawArc = 0; + Panel->ManageCurseur = NULL; Panel->ForceCloseManageCurseur = NULL; if( item->m_Flags & IS_NEW ) @@ -115,7 +142,7 @@ static void AbortSymbolTraceOn( WinEDA_DrawPanel* Panel, wxDC* DC ) if( DC ) { if( item->Type() == COMPONENT_ARC_DRAW_TYPE ) - Panel->GetParent()->DrawPanel->Refresh( ); + Panel->GetParent()->DrawPanel->Refresh(); else item->Draw( Panel, DC, wxPoint( 0, 0 ), -1, g_XorMode, NULL, DefaultTransformMatrix ); @@ -126,10 +153,53 @@ static void AbortSymbolTraceOn( WinEDA_DrawPanel* Panel, wxDC* DC ) } else { - wxPoint curpos = Panel->GetScreen()->m_Curseur; - Panel->GetScreen()->m_Curseur = StartCursor; - RedrawWhileMovingCursor( Panel, DC, TRUE ); - Panel->GetScreen()->m_Curseur = curpos; + // Restore old attributes, when the item was modified + if( item->m_Flags == IS_RESIZED ) + { + EraseItem( item ); + + switch( item->Type() ) + { + case COMPONENT_CIRCLE_DRAW_TYPE: + ( (LIB_CIRCLE*) item )->m_Radius = savedAttributes.radius; + break; + + case COMPONENT_RECT_DRAW_TYPE: + ( (LIB_RECTANGLE*) item )->m_Pos = savedAttributes.startPoint; + ( (LIB_RECTANGLE*) item )->m_End = savedAttributes.endPoint; + break; + + case COMPONENT_POLYLINE_DRAW_TYPE: + { + wxPoint point = savedAttributes.startPoint; + int index = ( (LIB_POLYLINE*) item )->m_ModifyIndex; + ( ( (LIB_POLYLINE*) item )->m_PolyPoints )[index] = point; + } + break; + + case COMPONENT_ARC_DRAW_TYPE: + ( (LIB_ARC*) item )->m_ArcStart = savedAttributes.startPoint; + ( (LIB_ARC*) item )->m_ArcEnd = savedAttributes.endPoint; + ( (LIB_ARC*) item )->m_Pos = savedAttributes.centerPoint; + + ComputeArcRadiusAngles( (LIB_ARC*) item ); + + break; + + default: + break; + } + + item->m_Flags = 0; + } + else + { + wxPoint curpos = Panel->GetScreen()->m_Curseur; + Panel->GetScreen()->m_Curseur = StartCursor; + RedrawWhileMovingCursor( Panel, DC, TRUE ); + Panel->GetScreen()->m_Curseur = curpos; + } + item->Draw( Panel, DC, wxPoint( 0, 0 ), -1, GR_DEFAULT_DRAWMODE, NULL, DefaultTransformMatrix ); item->m_Flags = 0; @@ -150,9 +220,9 @@ LIB_DRAW_ITEM* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEntry, LIB_ARC* Arc = new LIB_ARC( LibEntry ); m_drawItem = Arc; - ArcStartX = ArcEndX = GetScreen()->m_Curseur.x; - ArcStartY = ArcEndY = -( GetScreen()->m_Curseur.y ); - StateDrawArc = 1; + arcState.startPoint.x = arcState.endPoint.x = GetScreen()->m_Curseur.x; + arcState.startPoint.y = arcState.endPoint.y = -( GetScreen()->m_Curseur.y ); + arcState.stateDrawArc = 1; Arc->m_Fill = m_drawFillStyle; Arc->m_Width = m_drawLineWidth; } @@ -162,8 +232,8 @@ LIB_DRAW_ITEM* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEntry, { LIB_CIRCLE* Circle = new LIB_CIRCLE( LibEntry ); - m_drawItem = Circle; - Circle->m_Pos = GetScreen()->m_Curseur; + m_drawItem = Circle; + Circle->m_Pos = GetScreen()->m_Curseur; NEGATE( Circle->m_Pos.y ); Circle->m_Fill = m_drawFillStyle; Circle->m_Width = m_drawLineWidth; @@ -174,8 +244,8 @@ LIB_DRAW_ITEM* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEntry, { LIB_RECTANGLE* Square = new LIB_RECTANGLE( LibEntry ); - m_drawItem = Square; - Square->m_Pos = GetScreen()->m_Curseur; + m_drawItem = Square; + Square->m_Pos = GetScreen()->m_Curseur; NEGATE( Square->m_Pos.y ); Square->m_End = Square->m_Pos; Square->m_Fill = m_drawFillStyle; @@ -187,7 +257,7 @@ LIB_DRAW_ITEM* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEntry, { LIB_POLYLINE* polyline = new LIB_POLYLINE( LibEntry ); m_drawItem = polyline; - wxPoint point = GetScreen()->m_Curseur; + wxPoint point = GetScreen()->m_Curseur; NEGATE( point.y ); polyline->AddPoint( point ); // Start point of the current segment polyline->AddPoint( point ); // End point of the current segment @@ -200,8 +270,8 @@ LIB_DRAW_ITEM* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEntry, { LIB_SEGMENT* Segment = new LIB_SEGMENT( LibEntry ); - m_drawItem = Segment; - Segment->m_Pos = GetScreen()->m_Curseur; + m_drawItem = Segment; + Segment->m_Pos = GetScreen()->m_Curseur; NEGATE( Segment->m_Pos.y ); Segment->m_End = Segment->m_Pos; Segment->m_Width = m_drawLineWidth; @@ -212,10 +282,10 @@ LIB_DRAW_ITEM* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEntry, { LIB_TEXT* Text = new LIB_TEXT( LibEntry ); - m_drawItem = Text; - Text->m_Size.x = Text->m_Size.y = m_textSize; - Text->m_Orient = m_textOrientation; - Text->m_Pos = GetScreen()->m_Curseur; + m_drawItem = Text; + Text->m_Size.x = Text->m_Size.y = m_textSize; + Text->m_Orient = m_textOrientation; + Text->m_Pos = GetScreen()->m_Curseur; NEGATE( Text->m_Pos.y ); // Enter the graphic text info @@ -242,7 +312,7 @@ LIB_DRAW_ITEM* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEntry, default: DisplayError( this, wxT( "WinEDA_LibeditFrame::CreateGraphicItem() \ -error" ) ); +error" ) ); return NULL; } @@ -272,14 +342,14 @@ void WinEDA_LibeditFrame::GraphicItemBeginDraw( wxDC* DC ) switch( m_drawItem->Type() ) { case COMPONENT_ARC_DRAW_TYPE: - if( StateDrawArc == 1 ) + if( arcState.stateDrawArc == 1 ) { SymbolDisplayDraw( DrawPanel, DC, FALSE ); - StateDrawArc = 2; + arcState.stateDrawArc = 2; SymbolDisplayDraw( DrawPanel, DC, FALSE ); break; } - if( StateDrawArc > 1 ) + if( arcState.stateDrawArc > 1 ) { EndDrawGraphicItem( DC ); return; @@ -318,7 +388,7 @@ static void RedrawWhileMovingCursor( WinEDA_DrawPanel* panel, { LIB_DRAW_ITEM* item; - item = ( ( WinEDA_LibeditFrame* ) panel->GetParent() )->GetDrawItem(); + item = ( (WinEDA_LibeditFrame*) panel->GetParent() )->GetDrawItem(); if( item == NULL ) return; @@ -349,8 +419,8 @@ void WinEDA_LibeditFrame::StartMoveDrawSymbol( wxDC* DC ) SetCursor( wxCURSOR_HAND ); m_drawItem->m_Flags |= IS_MOVED; - StartCursor = GetScreen()->m_Curseur; - InitPosition = m_drawItem->GetPosition(); + StartCursor = GetScreen()->m_Curseur; + InitPosition = m_drawItem->GetPosition(); ItemPreviousPos = GetScreen()->m_Curseur; DrawPanel->ManageCurseur = RedrawWhileMovingCursor; DrawPanel->ForceCloseManageCurseur = AbortSymbolTraceOn; @@ -358,47 +428,200 @@ void WinEDA_LibeditFrame::StartMoveDrawSymbol( wxDC* DC ) } -/* Manage mouse events when creating new graphic object. */ +// @brief Modify a graphic symbol (drag edges etc.) +void WinEDA_LibeditFrame::StartModifyDrawSymbol( wxDC* DC ) +{ + if( m_drawItem == NULL ) + return; + + // TODO Check if this is really required + StartCursor = GetScreen()->m_Curseur; + InitPosition = m_drawItem->GetPosition(); + ItemPreviousPos = GetScreen()->m_Curseur; + + switch( m_drawItem->Type() ) + { + case COMPONENT_ARC_DRAW_TYPE: + { + wxPoint cursor = StartCursor; + cursor.y = -cursor.y; + + // The arc center point has to be rotated with while adjusting the + // start or end point, determine the side of this point and the distance + // from the start / end point + wxPoint startPoint = ( (LIB_ARC*) m_drawItem )->m_ArcStart; + wxPoint endPoint = ( (LIB_ARC*) m_drawItem )->m_ArcEnd; + wxPoint centerPoint = ( (LIB_ARC*) m_drawItem )->m_Pos; + wxPoint middlePoint = wxPoint( (startPoint.x + endPoint.x) / 2, + (startPoint.y + endPoint.y) / 2 ); + wxPoint centerVector = centerPoint - middlePoint; + wxPoint startEndVector = TwoPointVector( startPoint, endPoint ); + arcState.distanceCenter = EuclideanNorm( centerVector ); + + // Determine on which side is the center point + arcState.direction = CrossProduct( startEndVector, centerVector ) ? 1 : -1; + + arcState.startPoint = startPoint; + arcState.endPoint = endPoint; + + // Save the old values + savedAttributes.startPoint = startPoint; + savedAttributes.endPoint = endPoint; + savedAttributes.centerPoint = centerPoint; + + // Drag either the start, end point or the outline + if( HitTestPoints( startPoint, cursor, MINIMUM_SELECTION_DISTANCE ) ) + { + arcState.selectedPoint = START_POINT; + } + else if( HitTestPoints( endPoint, cursor, MINIMUM_SELECTION_DISTANCE ) ) + { + arcState.selectedPoint = END_POINT; + } + else + arcState.selectedPoint = OUTLINE; + + arcState.stateDrawArc = 0; + + m_drawItem->m_Flags |= IS_RESIZED; + } + break; + + case COMPONENT_RECT_DRAW_TYPE: + { + // Save old attributes + savedAttributes.startPoint = ( (LIB_RECTANGLE*) m_drawItem )->m_Pos; + savedAttributes.endPoint = ( (LIB_RECTANGLE*) m_drawItem )->m_End; + + // Resize rectangle + m_drawItem->m_Flags |= IS_RESIZED; + + // If the cursor is not on the rectangle edge point, + // lock the width or height + + wxPoint rectEnd = ( (LIB_RECTANGLE*) m_drawItem )->m_End; + wxPoint rectStart = ( (LIB_RECTANGLE*) m_drawItem )->m_Pos; + wxPoint cursor = StartCursor; + cursor.y = -cursor.y; + + ( (LIB_RECTANGLE*) m_drawItem )->m_isStartPointSelected = + abs( rectStart.x - cursor.x ) < MINIMUM_SELECTION_DISTANCE + || abs( rectStart.y - cursor.y ) < MINIMUM_SELECTION_DISTANCE; + + if( ( (LIB_RECTANGLE*) m_drawItem )->m_isStartPointSelected ) + { + ( (LIB_RECTANGLE*) m_drawItem )->m_isWidthLocked = + abs( rectStart.x - cursor.x ) >= MINIMUM_SELECTION_DISTANCE; + + ( (LIB_RECTANGLE*) m_drawItem )->m_isHeightLocked = + abs( rectStart.y - cursor.y ) >= MINIMUM_SELECTION_DISTANCE; + } + else + { + ( (LIB_RECTANGLE*) m_drawItem )->m_isWidthLocked = + abs( rectEnd.x - cursor.x ) >= MINIMUM_SELECTION_DISTANCE; + + ( (LIB_RECTANGLE*) m_drawItem )->m_isHeightLocked = + abs( rectEnd.y - cursor.y ) >= MINIMUM_SELECTION_DISTANCE; + } + } + break; + + case COMPONENT_CIRCLE_DRAW_TYPE: + savedAttributes.radius = ( (LIB_CIRCLE*) m_drawItem )->m_Radius; + m_drawItem->m_Flags |= IS_RESIZED; + break; + + case COMPONENT_POLYLINE_DRAW_TYPE: + { + // Drag one edge point of the polyline + + m_drawItem->m_Flags |= IS_RESIZED; + + // Find the nearest edge point to be dragged + wxPoint cursor = StartCursor; + wxPoint startPoint = ( ( (LIB_POLYLINE*) m_drawItem )->m_PolyPoints )[0]; + cursor.y = NEGATE( cursor.y ); + + // Begin with the first list point as nearest point + int index = 0; + ( (LIB_POLYLINE*) m_drawItem )->m_ModifyIndex = 0; + savedAttributes.startPoint = startPoint; + + // First distance is the current minimum distance + int distanceMin = (cursor - startPoint).x * (cursor - startPoint).x + + (cursor - startPoint).y * (cursor - startPoint).y; + + // Find the right index of the point to be dragged + BOOST_FOREACH( wxPoint point, ( ( (LIB_POLYLINE*) m_drawItem )->m_PolyPoints ) ) { + int distancePoint = (cursor - point).x * (cursor - point).x + + (cursor - point).y * (cursor - point).y; + + if( distancePoint < distanceMin ) + { + // Save point + savedAttributes.startPoint = point; + + ( (LIB_POLYLINE*) m_drawItem )->m_ModifyIndex = index; + distanceMin = distancePoint; + } + index++; + } + } + break; + + default: + break; + } + + DrawPanel->ManageCurseur = SymbolDisplayDraw; + DrawPanel->ForceCloseManageCurseur = AbortSymbolTraceOn; + DrawPanel->ManageCurseur( DrawPanel, DC, TRUE ); +} + + +//! @brief Manage mouse events when creating new graphic object or modifying an graphic object. static void SymbolDisplayDraw( WinEDA_DrawPanel* panel, wxDC* DC, bool erase ) { int dx, dy; - int DrawMode = g_XorMode; - BASE_SCREEN* Screen = panel->GetScreen(); - wxPoint curr_pos = Screen->m_Curseur; + int DrawMode = g_XorMode; + BASE_SCREEN* Screen = panel->GetScreen(); + wxPoint currentCursorPosition = Screen->m_Curseur; FILL_T fillStyle = NO_FILL; LIB_DRAW_ITEM* item; - item = ( ( WinEDA_LibeditFrame* ) panel->GetParent() )->GetDrawItem(); + item = ( (WinEDA_LibeditFrame*) panel->GetParent() )->GetDrawItem(); if( item == NULL ) return; - fillStyle = ( ( WinEDA_LibeditFrame* ) panel->GetParent() )->GetFillStyle(); + fillStyle = ( (WinEDA_LibeditFrame*) panel->GetParent() )->GetFillStyle(); - NEGATE( curr_pos.y ); + NEGATE( currentCursorPosition.y ); GRSetDrawMode( DC, DrawMode ); if( erase ) { - if( StateDrawArc == 1 ) + if( arcState.stateDrawArc == 1 ) { int Color = ReturnLayerColor( LAYER_DEVICE ); - GRLine( &panel->m_ClipBox, DC, ArcStartX, -ArcStartY, - ArcEndX, -ArcEndY, 0, Color ); + GRLine( &panel->m_ClipBox, DC, arcState.startPoint.x, -arcState.startPoint.y, + arcState.endPoint.x, -arcState.endPoint.y, 0, Color ); } else { item->Draw( panel, DC, wxPoint( 0, 0 ), -1, DrawMode, NULL, DefaultTransformMatrix ); - if( item->Type() == COMPONENT_ARC_DRAW_TYPE ) + + if( item->Type() == COMPONENT_ARC_DRAW_TYPE && item->m_Flags != IS_RESIZED ) { int Color = ReturnLayerColor( LAYER_DEVICE ); - GRDashedLine( &panel->m_ClipBox, DC, ArcStartX, -ArcStartY, + GRDashedLine( &panel->m_ClipBox, DC, arcState.startPoint.x, -arcState.startPoint.y, ( (LIB_ARC*) item )->m_Pos.x, -( (LIB_ARC*) item )->m_Pos.y, 0, Color ); - GRDashedLine( &panel->m_ClipBox, DC, ArcEndX, -ArcEndY, + GRDashedLine( &panel->m_ClipBox, DC, arcState.endPoint.x, -arcState.endPoint.y, ( (LIB_ARC*) item )->m_Pos.x, -( (LIB_ARC*) item )->m_Pos.y, 0, Color ); @@ -409,42 +632,168 @@ static void SymbolDisplayDraw( WinEDA_DrawPanel* panel, wxDC* DC, bool erase ) switch( item->Type() ) { case COMPONENT_ARC_DRAW_TYPE: - if( StateDrawArc == 1 ) + if( item->m_Flags == IS_RESIZED ) { - ArcEndX = curr_pos.x; - ArcEndY = curr_pos.y; - } + wxPoint newCenterPoint; - if( StateDrawArc == 2 ) - { - ComputeArc( (LIB_ARC*) item, Screen->m_Curseur ); + // Choose the point of the arc to be adjusted + if( arcState.selectedPoint == START_POINT ) + { + arcState.startPoint = currentCursorPosition; + arcState.endPoint = ( (LIB_ARC*) item )->m_ArcEnd; + } + else if( arcState.selectedPoint == END_POINT ) + { + arcState.endPoint = currentCursorPosition; + arcState.startPoint = ( (LIB_ARC*) item )->m_ArcStart; + } + else + { + // Use the cursor for adjusting the arc curvature + arcState.startPoint = ( (LIB_ARC*) item )->m_ArcStart; + arcState.endPoint = ( (LIB_ARC*) item )->m_ArcEnd; + + wxPoint middlePoint = wxPoint( (arcState.startPoint.x + arcState.endPoint.x) / 2, + (arcState.startPoint.y + arcState.endPoint.y) / 2 ); + + + // If the distance is too small, use the old center point + // else the new center point is calculated over the three points start/end/cursor + if( DistanceLinePoint( arcState.startPoint, arcState.endPoint, + currentCursorPosition ) + > MINIMUM_SELECTION_DISTANCE ) + { + newCenterPoint = ComputeCircumCenter( arcState.startPoint, + currentCursorPosition, arcState.endPoint ); + } + else + { + newCenterPoint = ( (LIB_ARC*) item )->m_Pos; + } + + // Determine if the arc angle is larger than 180 degrees -> this happens if both + // points (cursor position, center point) lie on the same side of the vector start-end + int crossA = CrossProduct( TwoPointVector( arcState.startPoint, arcState.endPoint ), + TwoPointVector( arcState.endPoint, + currentCursorPosition ) ); + int crossB = CrossProduct( TwoPointVector( arcState.startPoint, arcState.endPoint ), + TwoPointVector( arcState.endPoint, newCenterPoint ) ); + + bool isLarger180degrees = (crossA < 0 && crossB < 0) || (crossA >=0 && crossB >=0); + + if( isLarger180degrees ) + newCenterPoint = ( (LIB_ARC*) item )->m_Pos; + } + + if( arcState.selectedPoint == START_POINT || arcState.selectedPoint == END_POINT ) + { + // Compute the new center point when the start/end points are modified + wxPoint middlePoint = wxPoint( (arcState.startPoint.x + arcState.endPoint.x) / 2, + (arcState.startPoint.y + arcState.endPoint.y) / 2 ); + + wxPoint startEndVector = TwoPointVector( arcState.startPoint, arcState.endPoint ); + wxPoint perpendicularVector = wxPoint( -startEndVector.y, startEndVector.x ); + + double lengthPerpendicularVector = EuclideanNorm( perpendicularVector ); + + // prevent too large values, division / 0 + if( lengthPerpendicularVector < 1e-1 ) + lengthPerpendicularVector = 1e-1; + + perpendicularVector.x = (int) ( (double) perpendicularVector.x * + arcState.distanceCenter / + lengthPerpendicularVector ) * arcState.direction; + perpendicularVector.y = (int) ( (double) perpendicularVector.y * + arcState.distanceCenter / + lengthPerpendicularVector ) * arcState.direction; + + newCenterPoint = middlePoint + perpendicularVector; + + ( (LIB_ARC*) item )->m_ArcStart = arcState.startPoint; + ( (LIB_ARC*) item )->m_ArcEnd = arcState.endPoint; + } + + ( (LIB_ARC*) item )->m_Pos = newCenterPoint; + ComputeArcRadiusAngles( (LIB_ARC*) item ); + } + else + { + if( arcState.stateDrawArc == 1 ) + { + arcState.endPoint.x = currentCursorPosition.x; + arcState.endPoint.y = currentCursorPosition.y; + } + + if( arcState.stateDrawArc == 2 ) + { + ComputeArc( (LIB_ARC*) item, Screen->m_Curseur ); + } + item->m_Fill = fillStyle; } - item ->m_Fill = fillStyle; break; case COMPONENT_CIRCLE_DRAW_TYPE: - dx = ( (LIB_CIRCLE*) item )->m_Pos.x - curr_pos.x; - dy = ( (LIB_CIRCLE*) item )->m_Pos.y - curr_pos.y; + dx = ( (LIB_CIRCLE*) item )->m_Pos.x - currentCursorPosition.x; + dy = ( (LIB_CIRCLE*) item )->m_Pos.y - currentCursorPosition.y; ( (LIB_CIRCLE*) item )->m_Radius = (int) sqrt( ( (double) dx * dx ) + ( (double) dy * dy ) ); item->m_Fill = fillStyle; break; case COMPONENT_RECT_DRAW_TYPE: - ( (LIB_RECTANGLE*) item )->m_End = curr_pos; + if( ( (LIB_RECTANGLE*) item )->m_isHeightLocked ) + { + if( ( (LIB_RECTANGLE*) item )->m_isStartPointSelected ) + { + ( (LIB_RECTANGLE*) item )->m_Pos.x = currentCursorPosition.x; + } + else + { + ( (LIB_RECTANGLE*) item )->m_End.x = currentCursorPosition.x; + } + } + else if( ( (LIB_RECTANGLE*) item )->m_isWidthLocked ) + { + if( ( (LIB_RECTANGLE*) item )->m_isStartPointSelected ) + { + ( (LIB_RECTANGLE*) item )->m_Pos.y = currentCursorPosition.y; + } + else + { + ( (LIB_RECTANGLE*) item )->m_End.y = currentCursorPosition.y; + } + } + else + { + if( ( (LIB_RECTANGLE*) item )->m_isStartPointSelected ) + { + ( (LIB_RECTANGLE*) item )->m_Pos = currentCursorPosition; + } + else + { + ( (LIB_RECTANGLE*) item )->m_End = currentCursorPosition; + } + } + item->m_Fill = fillStyle; break; case COMPONENT_POLYLINE_DRAW_TYPE: { - unsigned idx = ( (LIB_POLYLINE*) item )->GetCornerCount() - 1; - ( (LIB_POLYLINE*) item )->m_PolyPoints[idx] = curr_pos; + unsigned idx; + + if( item->m_Flags == IS_RESIZED ) + idx = ( (LIB_POLYLINE*) item )->m_ModifyIndex; + else + idx = ( (LIB_POLYLINE*) item )->GetCornerCount() - 1; + + ( (LIB_POLYLINE*) item )->m_PolyPoints[idx] = currentCursorPosition; item->m_Fill = fillStyle; } break; case COMPONENT_LINE_DRAW_TYPE: - ( (LIB_SEGMENT*) item )->m_End = curr_pos; + ( (LIB_SEGMENT*) item )->m_End = currentCursorPosition; break; case COMPONENT_GRAPHIC_TEXT_DRAW_TYPE: @@ -454,25 +803,31 @@ static void SymbolDisplayDraw( WinEDA_DrawPanel* panel, wxDC* DC, bool erase ) ; } - if( StateDrawArc == 1 ) + if( arcState.stateDrawArc == 1 ) { int Color = ReturnLayerColor( LAYER_DEVICE ); - GRLine( &panel->m_ClipBox, DC, ArcStartX, -ArcStartY, ArcEndX, - -ArcEndY, 0, Color ); + GRLine( &panel->m_ClipBox, + DC, + arcState.startPoint.x, + -arcState.startPoint.y, + arcState.endPoint.x, + -arcState.endPoint.y, + 0, + Color ); } else { item->Draw( panel, DC, wxPoint( 0, 0 ), -1, DrawMode, NULL, DefaultTransformMatrix ); - if( item->Type() == COMPONENT_ARC_DRAW_TYPE ) + if( item->Type() == COMPONENT_ARC_DRAW_TYPE && item->m_Flags != IS_RESIZED ) { int Color = ReturnLayerColor( LAYER_DEVICE ); - GRDashedLine( &panel->m_ClipBox, DC, ArcStartX, -ArcStartY, + GRDashedLine( &panel->m_ClipBox, DC, arcState.startPoint.x, -arcState.startPoint.y, ( (LIB_ARC*) item )->m_Pos.x, -( (LIB_ARC*) item )->m_Pos.y, 0, Color ); - GRDashedLine( &panel->m_ClipBox, DC, ArcEndX, -ArcEndY, + GRDashedLine( &panel->m_ClipBox, DC, arcState.endPoint.x, -arcState.endPoint.y, ( (LIB_ARC*) item )->m_Pos.x, -( (LIB_ARC*) item )->m_Pos.y, 0, Color ); @@ -491,7 +846,7 @@ void WinEDA_LibeditFrame::EndDrawGraphicItem( wxDC* DC ) if( m_drawItem->Type() == COMPONENT_ARC_DRAW_TYPE ) { - if( StateDrawArc == 1 ) /* Trace arc under way must be completed. */ + if( arcState.stateDrawArc == 1 ) /* Trace arc under way must be completed. */ { DisplayError( this, wxT( "Arc in progress.." ) ); return; @@ -503,7 +858,7 @@ void WinEDA_LibeditFrame::EndDrawGraphicItem( wxDC* DC ) } } - StateDrawArc = 0; + arcState.stateDrawArc = 0; if( m_drawItem->m_Flags & IS_NEW ) { @@ -522,6 +877,8 @@ void WinEDA_LibeditFrame::EndDrawGraphicItem( wxDC* DC ) case COMPONENT_RECT_DRAW_TYPE: ( (LIB_RECTANGLE*) m_drawItem )->m_Fill = m_drawFillStyle; + ( (LIB_RECTANGLE*) m_drawItem )->m_isHeightLocked = false; + ( (LIB_RECTANGLE*) m_drawItem )->m_isWidthLocked = false; break; case COMPONENT_POLYLINE_DRAW_TYPE: @@ -565,10 +922,60 @@ void WinEDA_LibeditFrame::EndDrawGraphicItem( wxDC* DC ) } +//! @brief Compute the missing attributes (angles, radius), +// when the three points (start, end, center) given +//! @param arc Arc to be modified +static void ComputeArcRadiusAngles( LIB_ARC* arc ) +{ + wxPoint centerStartVector = TwoPointVector( arc->m_Pos, arc->m_ArcStart ); + wxPoint centerEndVector = TwoPointVector( arc->m_Pos, arc->m_ArcEnd ); + + arc->m_Radius = EuclideanNorm( centerStartVector ); + + arc->m_t1 = (int) ( atan2( (double) centerStartVector.y, + (double) centerStartVector.x ) * 1800 / M_PI ); + + arc->m_t2 = (int) ( atan2( (double) centerEndVector.y, + (double) centerEndVector.x ) * 1800 / M_PI ); + + NORMALIZE_ANGLE( arc->m_t1 ); + NORMALIZE_ANGLE( arc->m_t2 ); // angles = 0 .. 3600 + + // Restrict angle to less than 180 to avoid PBS display mirror + // Trace because it is assumed that the arc is less than 180 deg to find + // orientation after rotate or mirror. + if( (arc->m_t2 - arc->m_t1) > 1800 ) + arc->m_t2 -= 3600; + else if( (arc->m_t2 - arc->m_t1) <= -1800 ) + arc->m_t2 += 3600; + + wxString msg; + int angle = arc->m_t2 - arc->m_t1; + msg.Printf( _( "Arc %.1f deg" ), (float) angle / 10 ); + WinEDA_SchematicFrame* frame = + (WinEDA_SchematicFrame*) wxGetApp().GetTopWindow(); + frame->m_LibeditFrame->PrintMsg( msg ); + + while( (arc->m_t2 - arc->m_t1) >= 1800 ) + { + arc->m_t2--; + arc->m_t1++; + } + + while( (arc->m_t1 - arc->m_t2) >= 1800 ) + { + arc->m_t2++; + arc->m_t1--; + } + + NORMALIZE_ANGLE( arc->m_t1 ); +} + + /* * Routine for adjusting the parameters of the arc currently being drawn. * Calculates the center, radius, angles for the arc current - * Passes through the points ArcStartX, ArcEndX Y and Y with the nearest center + * Passes through the points arcState.startPoint.x, arcState.endPoint.x Y and Y with the nearest center * of the mouse position. * Note: The center is obviously not on the grid */ @@ -583,12 +990,12 @@ static void ComputeArc( LIB_ARC* DrawItem, wxPoint ArcCentre ) cY = -cY; /* Attention to the orientation of the axis Y. */ - /* Calculating cX and cY for the arc passes through ArcStartX, ArcEndX, + /* Calculating cX and cY for the arc passes through arcState.startPoint.x, arcState.endPoint.x, * X and Y */ - dx = ArcEndX - ArcStartX; - dy = ArcEndY - ArcStartY; - cX -= ArcStartX; - cY -= ArcStartY; + dx = arcState.endPoint.x - arcState.startPoint.x; + dy = arcState.endPoint.y - arcState.startPoint.y; + cX -= arcState.startPoint.x; + cY -= arcState.startPoint.y; angle = (int) ( atan2( (double) dy, (double) dx ) * 1800 / M_PI ); RotatePoint( &dx, &dy, angle ); /* The segment dx, dy is horizontal * -> Length = dx, dy = 0 */ @@ -596,28 +1003,28 @@ static void ComputeArc( LIB_ARC* DrawItem, wxPoint ArcCentre ) cX = dx / 2; /* cX, cY is on the median segment 0.0 a dx, 0 */ RotatePoint( &cX, &cY, -angle ); - cX += ArcStartX; - cY += ArcStartY; + cX += arcState.startPoint.x; + cY += arcState.startPoint.y; DrawItem->m_Pos.x = cX; DrawItem->m_Pos.y = cY; - dx = ArcStartX - DrawItem->m_Pos.x; - dy = ArcStartY - DrawItem->m_Pos.y; + dx = arcState.startPoint.x - DrawItem->m_Pos.x; + dy = arcState.startPoint.y - DrawItem->m_Pos.y; DrawItem->m_Radius = (int) sqrt( ( (double) dx * dx ) + - ( (double) dy * dy ) ); + ( (double) dy * dy ) ); DrawItem->m_t1 = (int) ( atan2( (double) dy, (double) dx ) * 1800 / M_PI ); - dx = ArcEndX - DrawItem->m_Pos.x; - dy = ArcEndY - DrawItem->m_Pos.y; + dx = arcState.endPoint.x - DrawItem->m_Pos.x; + dy = arcState.endPoint.y - DrawItem->m_Pos.y; DrawItem->m_t2 = (int) ( atan2( (double) dy, (double) dx ) * 1800 / M_PI ); - DrawItem->m_ArcStart.x = ArcStartX; - DrawItem->m_ArcStart.y = ArcStartY; - DrawItem->m_ArcEnd.x = ArcEndX; - DrawItem->m_ArcEnd.y = ArcEndY; + DrawItem->m_ArcStart.x = arcState.startPoint.x; + DrawItem->m_ArcStart.y = arcState.startPoint.y; + DrawItem->m_ArcEnd.x = arcState.endPoint.x; + DrawItem->m_ArcEnd.y = arcState.endPoint.y; NORMALIZE_ANGLE( DrawItem->m_t1 ); NORMALIZE_ANGLE( DrawItem->m_t2 ); // angles = 0 .. 3600 @@ -654,6 +1061,42 @@ static void ComputeArc( LIB_ARC* DrawItem, wxPoint ArcCentre ) } +//! @brief Given three points A B C, compute the circumcenter of the resulting triangle +//! reference: http://en.wikipedia.org/wiki/Circumscribed_circle +//! Coordinates of circumcenter in Cartesian coordinates +static wxPoint ComputeCircumCenter( wxPoint A, wxPoint B, wxPoint C ) +{ + double circumCenterX, circumCenterY; + double Ax = (double) A.x; + double Ay = (double) A.y; + double Bx = (double) B.x; + double By = (double) B.y; + double Cx = (double) C.x; + double Cy = (double) C.y; + + wxPoint circumCenter; + + double D = 2.0 * ( Ax * ( By - Cy ) + Bx * ( Cy - Ay ) + Cx * ( Ay - By ) ); + + // prevent division / 0 + if( fabs( D ) < 1e-7 ) + D = 1e-7; + + circumCenterX = ( (Ay * Ay + Ax * Ax) * (By - Cy) + + (By * By + Bx * Bx) * (Cy - Ay) + + (Cy * Cy + Cx * Cx) * (Ay - By) ) / D; + + circumCenterY = ( (Ay * Ay + Ax * Ax) * (Cx - Bx) + + (By * By + Bx * Bx) * (Ax - Cx) + + (Cy * Cy + Cx * Cx) * (Bx - Ax) ) / D; + + circumCenter.x = (int) circumCenterX; + circumCenter.y = (int) circumCenterY; + + return circumCenter; +} + + /* * Used for deleting last entered segment while creating a Polyline */ diff --git a/include/trigo.h b/include/trigo.h index eafbffc1a9..206493c120 100644 --- a/include/trigo.h +++ b/include/trigo.h @@ -22,6 +22,36 @@ int ArcTangente( int dy, int dx ); bool DistanceTest( int seuil, int dx, int dy, int spot_cX, int spot_cY ); +//! @brief Compute the distance between a line and a reference point +//! Reference: http://mathworld.wolfram.com/Point-LineDistance2-Dimensional.html +//! @param linePointA Point on line +//! @param linePointB Point on line +//! @param referencePoint Reference point +double DistanceLinePoint(wxPoint linePointA, wxPoint linePointB, wxPoint referencePoint); + +//! @brief Euclidean norm of a 2D vector +//! @param vector Two-dimensional vector +//! @return Euclidean norm of the vector +double EuclideanNorm(wxPoint vector); + +//! @brief Vector between two points +//! @param startPoint The start point +//! @param endPoint The end point +//! @return Vector between the points +wxPoint TwoPointVector(wxPoint startPoint, wxPoint endPoint); + +//! @brief Test, if two points are near each other +//! @param pointA First point +//! @param pointB Second point +//! @param threshold The maximum distance +//! @return True or false +bool HitTestPoints(wxPoint pointA, wxPoint pointB, double threshold); + +//! @brief Determine the cross product +//! @param vectorA Two-dimensional vector +//! @param vectorB Two-dimensional vector +int CrossProduct(wxPoint vectorA, wxPoint vectorB); + /** Function TestSegmentHit * test for hit on line segment @@ -34,6 +64,8 @@ bool DistanceTest( int seuil, int dx, int dy, int spot_cX, int spot_cY ); bool TestSegmentHit( wxPoint aRefPoint, wxPoint aStart, wxPoint aEnd, int aDist ); + + /*******************/ /* Macro NEW_COORD */ /*******************/