diff --git a/notebooks/common.py b/notebooks/common.py new file mode 100644 index 0000000..4c45fdf --- /dev/null +++ b/notebooks/common.py @@ -0,0 +1,18 @@ +import numpy as np +import csv +import matplotlib.pyplot as plt + +def import_csv_data(filename): + stylus_x = [] + stylus_y = [] + stylus_pressure = [] + time = [] + with open(filename) as csv_fp: + reader = csv.reader(csv_fp) + next(reader) # skip header + for row in reader: + for i, v in enumerate([stylus_x, stylus_y, stylus_pressure, time]): + v.append(float(row[i])) + stylus_pos = np.array([stylus_x, stylus_y]) + time = np.array(time) + return time, stylus_pos \ No newline at end of file diff --git a/notebooks/fast_data.csv b/notebooks/fast_data.csv new file mode 100644 index 0000000..14b7764 --- /dev/null +++ b/notebooks/fast_data.csv @@ -0,0 +1,217 @@ +x,y,pressure,time_usec +327.70943254927323,457.5467473524962,0.36800976800976803,13341423266 +327.04769037001734,459.1733736762481,0.3916971916971917,13341433267 +326.09184055553663,461.7295007564297,0.4129426129426129,13341438262 +324.9521734690404,465.6798789712557,0.4358974358974359,13341448260 +323.8860332913504,470.2111951588502,0.463003663003663,13341453253 +322.9669469312728,475.6720121028744,0.4954822954822955,13341463263 +322.08462402559826,482.0623298033283,0.525030525030525,13341468263 +321.23906457432685,489.2659606656581,0.5470085470085471,13341478267 +320.43026857745855,497.28290468986387,0.5641025641025641,13341483253 +319.8420533070089,504.95128593040846,0.5711843711843712,13341493262 +319.43765530857473,511.80635400907715,0.5758241758241758,13341498256 +319.547945671784,515.7567322239032,0.5782661782661783,13341507264 +320.31997821424926,516.4538577912255,0.5804639804639805,13341512275 +322.04786057119514,512.9682299546142,0.5846153846153846,13341522420 +324.7683561970249,505.2998487140696,0.5914529914529915,13341527280 +328.3711747285291,494.4944024205749,0.6034188034188034,13341537276 +332.67249889369236,481.48139183055974,0.6173382173382174,13341542263 +336.97382305885554,468.4683812405446,0.6322344322344322,13341552267 +341.01780304319703,457.08199697428137,0.6456654456654457,13341557287 +343.8485890322361,450.69167927382756,0.6598290598290598,13341567268 +344.95149266432924,450.9240544629349,0.6722832722832723,13341572419 +343.811825577833,460.9161875945537,0.6825396825396826,13341582312 +304.2543486400926,675.0499243570348,0.6991452991452991,13341617304 +301.57061646866595,689.9219364599093,0.7137973137973138,13341627298 +298.2619055723866,708.1633888048411,0.7299145299145299,13341632308 +295.10024849371956,725.7077155824509,0.7555555555555555,13341642309 +294.3282159512544,730.9361573373676,0.7892551892551892,13341647270 +295.87228103618475,723.9649016641453,0.8178266178266178,13341657427 +299.8794975661232,705.026323751891,0.8459096459096459,13341662307 +306.0925213602478,677.0251134644478,0.8656898656898657,13341672414 +313.9966640569153,642.8659606656581,0.8776556776556776,13341677324 +322.56254893283864,608.8229954614221,0.8815628815628815,13341686308 +330.9078530823433,578.8465960665658,0.8815628815628815,13341691312 +337.56203832930527,558.3975794251135,0.8761904761904762,13341701310 +341.9368894032747,549.2187594553707,0.8691086691086691,13341706456 +343.51771794260816,552.8205748865355,0.8522588522588522,13341716309 +342.1574701296933,569.3192133131619,0.8305250305250306,13341721310 +338.2237805085611,597.4366111951589,0.802930402930403,13341731267 +332.0842836232427,634.8490166414523,0.7763125763125763,13341736288 +324.69482928821867,676.7927382753404,0.7587301587301587,13341746310 +316.717159682745,720.1307110438729,0.7467643467643468,13341751319 +309.4747591653334,758.2402420574887,0.7567765567765568,13341761311 +303.5926064608367,789.6108925869894,0.7721611721611722,13341766301 +299.62215338530143,809.943721633888,0.7892551892551892,13341776418 +297.8942710283555,818.4254160363087,0.8136752136752137,13341781299 +298.4824862988052,814.8236006051437,0.8344322344322345,13341791355 +301.42356265105354,798.3249621785174,0.852014652014652,13341796307 +306.8277904483099,770.6723146747353,0.8695970695970696,13341806489 +314.5113524185587,733.2599092284418,0.8808302808302808,13341811286 +323.9963236545597,690.7352496217852,0.8847374847374847,13341821318 +334.65772543146,647.0487140695915,0.884981684981685,13341826271 +344.84120230111995,608.5906202723147,0.8757020757020757,13341836311 +352.92916226980293,581.518910741301,0.8605616605616606,13341850311 +358.6274977022841,565.1364599092284,0.8398046398046398,13341851308 +361.49504714572623,561.4184568835099,0.8207570207570207,13341855333 +361.2009395105014,572.2239031770046,0.7980463980463981,13341865311 +358.4069169758655,595.1128593040847,0.7716727716727717,13341870306 +352.41447390815944,632.5252647503783,0.7492063492063492,13341880311 +343.8485890322361,681.5564296520423,0.7267399267399267,13341885301 +334.0327467066072,735.0027231467474,0.7142857142857143,13341895309 +324.1433774721721,788.1004538577912,0.717948717948718,13341900305 +315.72454641386116,833.8783661119516,0.7321123321123321,13341910330 +309.40123225652724,868.8508320726172,0.746031746031746,13341915309 +305.7248868162168,889.532223903177,0.7621489621489621,13341925376 +304.73227354733297,895.1092284417549,0.7753357753357754,13341930261 +306.49691935868196,885.3494704992436,0.7851037851037851,13341940453 +310.9452973414576,861.0662632375189,0.7956043956043956,13341945270 +318.00388058685365,824.8157337367625,0.8058608058608059,13341955322 +327.56237873166083,778.8054462934947,0.8126984126984127,13341960315 +338.8487592334139,728.8447806354009,0.800976800976801,13341970346 +351.0909895496477,678.3031770045386,0.7831501831501831,13341975305 +362.6347142322225,633.4547655068079,0.7511599511599512,13341985350 +372.5608469210607,597.78517397882,0.7157509157509158,13341990416 +379.39884944003813,575.8257186081695,0.6910866910866911,13342000315 +382.85461415392996,569.3192133131619,0.6725274725274726,13342005346 +382.7443237907206,579.7760968229954,0.6678876678876678,13342015312 +379.06797835041016,606.9639939485628,0.6678876678876678,13342020307 +372.78142764747935,648.7915279878971,0.67008547008547,13342029298 +364.10525240834664,703.0511346444781,0.6708180708180708,13342034303 +354.17911971950844,765.3276853252647,0.673992673992674,13342044314 +343.811825577833,832.2517397881996,0.6727716727716728,13342049311 +333.92245634339787,897.2006051437216,0.6896214896214896,13342059370 +325.28304455866834,956.8048411497731,0.715018315018315,13342064312 +318.99649385573747,1003.8608169440242,0.7357753357753358,13342074436 +315.320148415427,1035.4638426626325,0.7604395604395604,13342079266 +314.91575041699286,1048.593040847201,0.7697191697191698,13342089349 +317.89359022364437,1042.2027231467473,0.7736263736263737,13342094311 +324.2536678353814,1016.7576399394857,0.7829059829059829,13342104309 +333.959219797801,973.3034795763994,0.7907203907203907,13342109305 +346.78966538448446,915.5582450832072,0.796092796092796,13342119267 +362.450896960207,846.5428139183056,0.7987789987789988,13342124454 +380.0238281648909,773.925567322239,0.7987789987789988,13342134314 +398.6628995472649,702.1216338880484,0.7992673992673993,13342139461 +416.30935766075504,639.728895612708,0.7914529914529914,13342149298 +431.89706232767134,590.1167927382753,0.7772893772893773,13342154306 +443.5510773734554,558.3975794251135,0.7611721611721611,13342164267 +450.7199509820608,546.6626323751891,0.7450549450549451,13342169350 +452.85223133744086,556.190015128593,0.7372405372405373,13342179316 +450.09497225720804,586.5149773071105,0.7365079365079366,13342184312 +443.07315246621505,637.753706505295,0.7382173382173383,13342193328 +432.52204105252406,706.5367624810892,0.7391941391941392,13342198308 +420.16952037308096,786.9385779122541,0.7396825396825397,13342208340 +406.787622970351,874.5440242057489,0.7450549450549451,13342213313 +394.5821561085203,957.8505295007565,0.7565323565323565,13342223406 +384.32515233005415,1032.3267776096823,0.76996336996337,13342228312 +377.229805630255,1089.2586989409986,0.7836385836385836,13342238315 +373.77404091636316,1126.671104387292,0.7956043956043956,13342243440 +374.06814855158797,1141.0783661119515,0.8075702075702076,13342253311 +378.07536508152634,1132.3642965204235,0.8214896214896215,13342258383 +385.7589270517752,1101.6907715582452,0.8378510378510379,13342268290 +397.0085440991252,1049.871104387292,0.8515262515262515,13342273325 +411.4933451339483,983.1794251134645,0.8556776556776556,13342283297 +429.06627633863224,905.7984871406959,0.8556776556776556,13342288288 +448.14650917384347,828.0689863842663,0.8241758241758241,13342298297 +467.66790346189197,755.335552193646,0.778998778998779,13342303281 +485.0937808489635,696.6608169440242,0.705982905982906,13342313370 +499.0271300677401,655.7627836611196,0.6344322344322344,13342318245 +507.5194880348572,637.1727685325264,0.5975579975579975,13342328257 +509.9458760254621,641.4717095310136,0.581929181929182,13342333288 +506.60040167477956,668.0786686838125,0.5982905982905983,13342343294 +497.9242264356469,716.0641452344931,0.6161172161172161,13342348315 +485.53494230180075,781.0130105900151,0.638095238095238,13342358345 +470.75603363175276,859.7881996974281,0.663980463980464,13342363306 +455.42567314565815,945.8832072617247,0.705006105006105,13342373416 +440.8673452020288,1032.907715582451,0.7496947496947497,13342377268 +428.99274942982606,1111.1019667170954,0.7882783882783883,13342387310 +420.2430472818872,1175.1213313161877,0.8126984126984127,13342392288 +415.4637982094836,1217.8783661119517,0.8234432234432234,13342402308 +414.6182387582122,1238.327382753404,0.8324786324786325,13342407319 +417.44902474725126,1236.0036308623298,0.8407814407814408,13342417305 +424.02968308540693,1210.6747352496218,0.8512820512820513,13342422365 +434.1028695918576,1164.4320726172466,0.8564102564102564,13342432350 +447.63182081220003,1100.2965204236007,0.8505494505494505,13342437297 +464.06508493038774,1022.7993948562784,0.8273504273504273,13342447267 +482.7041563127617,938.0986384266263,0.7887667887667887,13342452304 +502.04173332879463,856.1863842662632,0.736996336996337,13342462355 +520.9381488919903,780.5482602118003,0.6879120879120879,13342467297 +537.0405419205501,722.2220877458396,0.6432234432234433,13342477326 +549.3930625999932,683.647806354009,0.6180708180708181,13342482304 +556.1207747557613,669.2405446293494,0.6188034188034188,13342492332 +556.7825169350172,679.348865355522,0.6273504273504273,13342497317 +552.5547196786601,710.8357034795764,0.652991452991453,13342522397 +545.6064267964734,751.5013615733736,0.676923076923077,13342523321 +538.3272628246588,792.8641452344932,0.6927960927960928,13342524293 +527.4820437757429,856.7673222390317,0.7142857142857143,13342527322 +514.3942540082377,937.1691376701966,0.7440781440781441,13342537266 +498.3653878884842,1039.995158850227,0.7733821733821734,13342541322 +482.9615004935834,1143.7506807866869,0.7985347985347986,13342551268 +473.1088947135514,1219.2726172465962,0.8168498168498168,13342556358 +469.35902236443474,1258.6602118003025,0.8234432234432234,13342566319 +471.71188344623346,1260.054462934947,0.8288156288156289,13342571311 +477.70432651393946,1239.0245083207262,0.8356532356532357,13342581319 +487.26282465874664,1195.2217851739788,0.843956043956044,13342586303 +500.1667971542363,1133.758547655068,0.8449328449328449,13342596316 +516.3059536371992,1058.7013615733738,0.8300366300366301,13342601338 +534.7244442931545,975.9757942511346,0.8012210012210013,13342611316 +554.7605269428465,893.2502269288956,0.7714285714285715,13342616314 +574.0613405044763,821.0977307110438,0.7326007326007326,13342626316 +591.2666371651292,763.0039334341906,0.7013431013431013,13342631310 +603.6559212989754,728.7285930408472,0.693040293040293,13342641293 +610.3836334547435,719.5497730711044,0.6862026862026862,13342646315 +610.6777410899683,736.3969742813919,0.693040293040293,13342656373 +605.0529325662934,779.1540090771558,0.7072039072039072,13342661318 +595.2370902406644,841.0819969742814,0.7128205128205128,13342671315 +582.2963542907717,918.6953101361573,0.715018315018315,13342676322 +568.9144568880416,1002.6989409984872,0.7194139194139194,13342686302 +555.9369574837458,1087.6320726172466,0.7296703296703296,13342691308 +545.2387922524424,1165.3615733736763,0.7509157509157509,13342701305 +537.371413010178,1229.8456883509834,0.7716727716727717,13342706380 +532.8127446641931,1275.3912254160364,0.7909645909645909,13342715268 +531.8936583041154,1300.3715582450832,0.8075702075702076,13342720310 +534.5773904755421,1302.6953101361573,0.8158730158730159,13342730323 +540.9374680872792,1283.2919818456883,0.827106227106227,13342735300 +550.7900738673112,1243.3234493192133,0.8368742368742369,13342745311 +563.9513905436226,1185.2296520423602,0.8422466422466423,13342750308 +580.4581815706165,1113.3095310136157,0.8454212454212454,13342760264 +599.9428124042619,1031.7458396369138,0.8461538461538461,13342765320 +621.3391428668687,951.2278366111951,0.8310134310134311,13342775326 +643.7280865983593,875.1249621785174,0.8036630036630037,13342780312 +663.4332981584232,816.1016641452345,0.7438339438339439,13342790325 +678.8739490077271,778.4568835098336,0.6852258852258852,13342795313 +687.7707049732784,766.4895612708018,0.6427350427350428,13342805276 +689.6088776934337,781.5939485627837,0.611965811965812,13342810273 +685.491370800286,819.9358547655069,0.6144078144078144,13342820313 +676.4107975627192,878.4944024205749,0.6158730158730159,13342825323 +664.7935459713382,949.1364599092284,0.6297924297924298,13342835327 +651.8528100214453,1027.7954614220878,0.6525030525030525,13342840383 +639.8311604316302,1106.2220877458396,0.6998778998778998,13342850316 +629.5741566531641,1179.5364599092284,0.7516483516483516,13342855320 +622.4788099533649,1241.115885022693,0.7914529914529914,13342865317 +618.9495183306668,1287.1261724659607,0.8266178266178266,13342870306 +619.5744970555196,1310.9446293494705,0.842979242979243,13342879268 +624.5007999455356,1311.525567322239,0.8578754578754578,13342884305 +633.6549000919086,1288.0556732223904,0.873992673992674,13342894318 +647.0735609490417,1241.5806354009078,0.8886446886446886,13342899308 +664.3523845185009,1178.2583963691377,0.8986568986568987,13342909263 +684.8296286210301,1101.8069591527988,0.9037851037851038,13342914264 +707.6229703509548,1021.753706505295,0.8964590964590965,13342924326 +731.7030329849882,943.3270801815431,0.873992673992674,13342929322 +754.8640092589441,875.705900151286,0.8068376068376069,13342939295 +776.3706300847601,822.4919818456883,0.7152625152625153,13342944339 +793.4656363822038,788.6813918305597,0.6205128205128205,13342954311 +805.2667052456003,775.900756429652,0.5377289377289377,13342959312 +810.8179868604691,784.6148260211801,0.5111111111111111,13342969315 +809.9724274091976,814.3588502269289,0.5238095238095238,13342974319 +803.9064574326854,862.3443267776097,0.575091575091575,13342984318 +793.7597440174286,926.2475037821482,0.6371184371184371,13342989318 +781.7013309732104,1000.7237518910741,0.7040293040293041,13342999313 +768.6503046601083,1082.4036308623297,0.7645909645909645,13343004304 +756.9227627055179,1163.6187594553708,0.8075702075702076,13343014303 +747.1436838342921,1240.1863842662633,0.841025641025641,13343019254 +740.5630254961364,1304.4381240544628,0.8517704517704517,13343029277 +737.8057664159036,1353.469288956127,0.8527472527472527,13343034308 +739.1292507744154,1383.5618759455372,0.8312576312576313,13343044329 +744.6805323892842,1394.0187594553706,0.7819291819291819,13343049309 +754.496374714913,1384.9561270801814,0.765079365079365,13343058360 diff --git a/notebooks/frequency_analysis.ipynb b/notebooks/frequency_analysis.ipynb new file mode 100644 index 0000000..64708a0 --- /dev/null +++ b/notebooks/frequency_analysis.ipynb @@ -0,0 +1,136 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "import common\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from scipy import fft\n", + "\n", + "time, pos = common.import_csv_data('fast_data.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average time delta [s] = 0.007605088372093023\n", + "Min time delta [s] = 0.0009239999999999999\n", + "Estimated sampling frequency [Hz] = 131.49091122589894\n", + "Frequency upper bound [Hz] 1082.2510822510824\n" + ] + } + ], + "source": [ + "time_deltas = (time[1:] - time[:-1])*1e-6\n", + "print('Average time delta [s] =', np.mean(time_deltas))\n", + "print('Min time delta [s] =', np.min(time_deltas))\n", + "print('Estimated sampling frequency [Hz] =', 1/np.mean(time_deltas))\n", + "print('Frequency upper bound [Hz]', 1/np.min(time_deltas))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(time_deltas)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x_ft = fft.fft(pos[0])\n", + "freqs = np.linspace(0, )\n", + "plt.plot(np.abs(x_ft)/len(pos[0]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/shape_analysis.ipynb b/notebooks/shape_analysis.ipynb new file mode 100644 index 0000000..56cd743 --- /dev/null +++ b/notebooks/shape_analysis.ipynb @@ -0,0 +1,112 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "import common\n", + "import matplotlib.pyplot as plt\n", + "\n", + "time, pos = common.import_csv_data('w_data.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(pos[0], -pos[1], s=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "215" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "216" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/w_data.csv b/notebooks/w_data.csv new file mode 100644 index 0000000..cfebcf6 --- /dev/null +++ b/notebooks/w_data.csv @@ -0,0 +1,205 @@ +x,y,pressure,time_usec +18.822888654389487,97.13282904689864,0.10256410256410256,11399014806 +18.492017564761547,95.62239031770045,0.1111111111111111,11399024788 +18.01409265752119,93.53101361573374,0.12087912087912088,11399029781 +17.572931204683936,91.0910741301059,0.13333333333333333,11399039790 +17.2788235694591,88.99969742813919,0.14481074481074482,11399044778 +17.168533206249787,87.60544629349471,0.15873015873015872,11399054783 +17.09500629744358,86.90832072617246,0.1728937728937729,11399059831 +17.09500629744358,86.90832072617246,0.1838827838827839,11399069794 +17.20529666065289,87.83782148260212,0.19462759462759463,11399074789 +17.42587738707152,89.58063540090771,0.20415140415140415,11399084790 +17.75674847669946,92.25295007564297,0.21343101343101342,11399089814 +18.197909929536713,95.50620272314674,0.22271062271062272,11399099785 +18.74936174558328,99.57276853252648,0.231990231990232,11399104778 +19.374340470436056,104.33645990922844,0.24151404151404152,11399114830 +20.072846104095042,109.56490166414524,0.252014652014652,11399119826 +20.80811519215713,115.25809379727686,0.26544566544566545,11399129782 +21.543384280219218,121.4160363086233,0.28034188034188035,11399133889 +22.352180277087516,127.92254160363086,0.29572649572649573,11399143784 +23.308030091568234,134.89379727685326,0.30964590964590966,11399148872 +24.41093372366137,142.32980332829047,0.3189255189255189,11399158805 +25.624127718963816,150.46293494704992,0.32576312576312577,11399163785 +26.874085168669367,159.2931921331316,0.3286935286935287,11399173825 +28.23433298158423,168.47201210287443,0.3308913308913309,11399178841 +29.70487115770841,177.65083207261725,0.3316239316239316,11399188784 +31.285699697041903,186.94583963691377,0.3326007326007326,11399193778 +32.9400551451816,196.2408472012103,0.33357753357753356,11399203784 +34.63117404772441,205.6520423600605,0.3343101343101343,11399208778 +36.35905640467032,215.64417549167928,0.3347985347985348,11399218784 +38.12370221601933,225.75249621785173,0.335042735042735,11399223785 +39.81482111856214,236.32556732223904,0.335042735042735,11399233791 +41.50594002110495,247.01482602118003,0.33528693528693526,11399238781 +43.01324165163223,257.82027231467475,0.33577533577533575,11399248924 +44.33672601014399,268.39334341906203,0.33601953601953605,11399253784 +45.54992000544644,278.7340393343419,0.33650793650793653,11399263780 +46.61606018313647,288.49379727685323,0.336996336996337,11399268789 +47.7189638152296,298.1373676248109,0.33724053724053726,11399278784 +48.85863090172584,307.7809379727685,0.337973137973138,11399283935 +50.10858835143139,317.42450832072615,0.3384615384615385,11399293798 +51.43207270994315,327.41664145234495,0.3391941391941392,11399298856 +52.86584743166423,337.8735249621785,0.3396825396825397,11399307786 +54.37314906219151,348.6789712556732,0.3401709401709402,11399312775 +55.84368723831569,359.94916792738275,0.3409035409035409,11399322815 +57.27746196003676,371.4517397881997,0.3413919413919414,11399327786 +58.527419409742315,382.7219364599092,0.3418803418803419,11399337784 +59.667086496238554,393.6435703479576,0.3423687423687424,11399342827 +60.659699765122376,403.86807866868384,0.3431013431013431,11399352805 +61.505259216393775,413.27927382753404,0.34383394383394383,11399357798 +62.31405521326207,421.76096822995464,0.3452991452991453,11399367845 +63.04932430132416,429.1969742813918,0.347008547008547,11399372781 +63.67430302617694,435.5872919818457,0.3496947496947497,11399382927 +64.26251829662661,441.0481089258699,0.35262515262515265,11399387804 +64.77720665827007,445.81180030257184,0.35702075702075703,11399397779 +65.18160465670422,450.22692889561273,0.3619047619047619,11399402781 +65.58600265513837,454.64205748865356,0.3672771672771673,11399412781 +65.95363719916942,459.1733736762481,0.3728937728937729,11399417950 +66.39479865200667,463.58850226928894,0.3775335775335775,11399427783 +66.83596010484392,468.0036308623298,0.38168498168498166,11399432864 +67.31388501208428,471.6054462934947,0.38412698412698415,11399442791 +67.79180991932463,474.39394856278363,0.3855921855921856,11399447790 +68.269734826565,476.13676248108925,0.3855921855921856,11399457805 +68.74765973380536,476.7177004538578,0.3855921855921856,11399462805 +69.26234809544881,476.02057488653554,0.38534798534798537,11399471790 +69.8137999114954,474.2777609682299,0.38534798534798537,11399477776 +70.36525172754196,471.02450832072617,0.3860805860805861,11399486793 +70.91670354358853,466.60937972768534,0.38705738705738707,11399491782 +71.50491881403819,461.0323751891074,0.3882783882783883,11399501785 +72.09313408448786,454.64205748865356,0.38925518925518926,11399506781 +72.75487626374374,447.67080181543116,0.38998778998779,11399516913 +73.41661844299962,439.7700453857791,0.3904761904761905,11399521779 +74.11512407665862,431.17216338880485,0.3904761904761905,11399531906 +74.8871566191238,421.5285930408472,0.38974358974358975,11399536796 +75.6959526159921,410.8393343419062,0.38852258852258853,11399546785 +76.61503897606971,399.22057488653553,0.3882783882783883,11399551783 +77.75470606256596,386.6723146747353,0.38852258852258853,11399561814 +79.0046635122715,373.5431164901664,0.38974358974358975,11399566854 +80.43843823399258,359.83298033282904,0.3912087912087912,11399576782 +82.01926677332607,345.8904689863843,0.3921855921855922,11399581909 +83.71038567586888,332.1803328290469,0.3924297924297924,11399591788 +85.43826803281479,318.81875945537064,0.39267399267399267,11399596776 +87.12938693535759,305.6895612708018,0.39316239316239315,11399606786 +88.7837423834973,292.7927382753404,0.3934065934065934,11399611786 +90.29104401402458,279.895915279879,0.3934065934065934,11399621783 +91.68805528134254,266.99909228441754,0.3934065934065934,11399626785 +93.0115396398543,254.45083207261726,0.3934065934065934,11399636784 +94.29826054396297,242.01875945537066,0.39316239316239315,11399641782 +95.51145453926542,229.81906202723147,0.39316239316239315,11399650791 +96.76141198897096,217.9679273827534,0.39316239316239315,11399655781 +97.90107907546721,206.69773071104387,0.3934065934065934,11399665890 +99.04074616196344,196.1246596066566,0.3938949938949939,11399670781 +100.07012288525037,186.48108925869894,0.39487179487179486,11399680781 +100.95244579092487,177.41845688350983,0.3963369963369963,11399685800 +101.68771487898697,169.16913767019668,0.39755799755799753,11399695788 +102.20240324063043,161.73313161875944,0.3987789987789988,11399700837 +102.53327433025837,154.87806354009078,0.4,11399710783 +102.8273819654832,148.72012102874433,0.40073260073260075,11399715936 +103.04796269190183,143.25930408472013,0.4014652014652015,11399725809 +103.19501650951425,138.14704992435705,0.4021978021978022,11399730776 +103.34207032712666,133.26717095310136,0.40293040293040294,11399740781 +103.37883378152976,128.96822995461423,0.40341880341880343,11399745774 +103.41559723593288,125.0178517397882,0.4039072039072039,11399755784 +103.45236069033598,121.532223903177,0.40415140415140416,11399760776 +103.48912414473908,118.51134644478064,0.4043956043956044,11399770786 +103.6361779623515,115.72284417549167,0.4043956043956044,11399775776 +103.81999523436703,113.28290468986384,0.4043956043956044,11399785786 +104.07733941518876,110.95915279878972,0.4039072039072039,11399790805 +104.4082105048167,109.10015128593041,0.40293040293040294,11399800868 +104.77584504884774,107.70590015128593,0.40195360195360197,11399805779 +105.14347959287878,106.77639939485628,0.400976800976801,11399815869 +105.54787759131293,106.31164901664145,0.4,11399819779 +106.02580249855329,106.42783661119516,0.3992673992673993,11399829778 +106.54049086019675,107.2411497730711,0.39902319902319905,11399834782 +107.20223303945264,108.9839636913767,0.3987789987789988,11399844790 +107.97426558191783,111.54009077155824,0.3987789987789988,11399849782 +108.89335194199543,115.02571860816944,0.3987789987789988,11399859779 +109.95949211968546,119.32465960665658,0.3987789987789988,11399864803 +111.17268611498791,124.20453857791226,0.39853479853479856,11399874786 +112.49617047349967,129.78154311649016,0.39829059829059826,11399879783 +113.92994519522075,135.8232980332829,0.3978021978021978,11399889789 +115.47401028015113,142.56217851739788,0.3973137973137973,11399894806 +117.12836572829085,149.88199697428138,0.3968253968253968,11399904781 +118.89301153963986,158.13131618759456,0.39658119658119656,11399909776 +120.69442080539197,167.19394856278367,0.39658119658119656,11399919785 +122.5693569799503,177.0698940998487,0.39658119658119656,11399924798 +124.51782006331484,187.7591527987897,0.39755799755799753,11399934789 +126.57657350988869,199.02934947049926,0.39902319902319905,11399939776 +128.70885386526874,210.88048411497732,0.4061050061050061,11399949821 +130.9514245838581,223.1963691376702,0.41514041514041516,11399954781 +133.1204683936413,235.97700453857792,0.42466422466422465,11399964813 +135.25274874902135,249.22239031770044,0.4351648351648352,11399969797 +137.3850291044014,262.93252647503783,0.44078144078144077,11399979784 +139.51730945978147,276.8750378214826,0.44468864468864466,11399983821 +141.83340708717705,290.9337367624811,0.44761904761904764,11399993783 +144.25979507778194,304.8762481089259,0.4490842490842491,11399998845 +146.79647343159616,318.70257186081693,0.45006105006105007,11400008783 +149.36991523981345,332.64508320726173,0.45103785103785105,11400013775 +151.90659359362766,346.5875945537065,0.452014652014652,11400023783 +154.40650849303879,360.7624810892587,0.452991452991453,11400028775 +156.83289648364368,374.5888048411498,0.4542124542124542,11400038784 +159.22252101984546,387.950378214826,0.4554334554334554,11400043780 +161.53861864724104,400.4986384266263,0.45665445665445664,11400053788 +163.7444259114273,412.11739788199696,0.4581196581196581,11400058779 +165.80317935800116,422.92284417549166,0.4598290598290598,11400068853 +167.86193280457502,432.91497730711046,0.46153846153846156,11400073780 +169.88392279674576,442.09379727685325,0.4634920634920635,11400083858 +171.9794396977227,450.69167927382756,0.4652014652014652,11400088780 +174.14848350750586,458.47624810892586,0.4661782661782662,11400098851 +176.31752731728903,465.56369137670197,0.4669108669108669,11400103783 +178.41304421826598,472.07019667170954,0.4673992673992674,11400113778 +180.36150730163052,477.76338880484116,0.4678876678876679,11400118781 +182.12615311297955,482.99183055975794,0.46813186813186813,11400128775 +183.70698165231303,487.6393343419062,0.4683760683760684,11400133908 +185.2142832828403,491.8220877458396,0.4686202686202686,11400143786 +186.6848214589645,495.77246596066567,0.46886446886446886,11400148861 +188.11859618068556,499.60665658093797,0.4691086691086691,11400157800 +189.55237090240664,503.2084720121029,0.46935286935286935,11400163777 +190.9493821697246,506.9264750378215,0.46935286935286935,11400172788 +192.30962998263948,510.41210287443266,0.46935286935286935,11400177790 +193.63311434115124,513.7815431164902,0.46886446886446886,11400187784 +194.8463083364537,516.5700453857792,0.46813186813186813,11400192807 +195.98597542294993,518.5452344931921,0.46715506715506716,11400202804 +197.01535214623686,519.8232980332829,0.4661782661782662,11400207783 +197.97120196071756,520.4042360060514,0.4652014652014652,11400217838 +198.85352486639206,520.5204236006051,0.46422466422466424,11400222798 +199.7358477720666,520.0556732223903,0.463003663003663,11400232798 +200.58140722333798,519.0099848714069,0.46202686202686205,11400237782 +201.4269666746094,517.034795763994,0.46202686202686205,11400247780 +202.2725261258808,514.246293494705,0.46251526251526254,11400252781 +203.0813221227491,510.6444780635401,0.4647130647130647,11400262783 +203.81659121081117,506.22934947049924,0.46715506715506716,11400267798 +204.51509684447015,500.88472012102875,0.46886446886446886,11400277785 +205.14007556932293,494.7267776096823,0.4700854700854701,11400282793 +205.7650542941757,487.29077155824507,0.4708180708180708,11400292813 +206.3900330190285,478.6928895612708,0.4717948717948718,11400297775 +207.01501174388127,468.8169440242057,0.4735042735042735,11400307809 +207.67675392313714,457.6629349470499,0.47545787545787543,11400312780 +208.30173264798992,445.4632375189107,0.47741147741147744,11400321785 +208.8899479184396,431.9854765506808,0.4796092796092796,11400327779 +209.47816318888925,417.57821482602117,0.48205128205128206,11400336784 +209.99285155053272,401.8928895612708,0.4844932844932845,11400341786 +210.50753991217618,385.5104387291982,0.4862026862026862,11400351782 +211.02222827381965,368.66323751891076,0.4874236874236874,11400356779 +211.53691663546311,351.6998487140696,0.48864468864468863,11400366862 +212.05160499710658,334.96883509833583,0.4901098901098901,11400371794 +212.60305681315316,318.5863842662632,0.4927960927960928,11400381836 +213.1545086291997,302.43630862329803,0.4954822954822955,11400386781 +213.74272389964938,286.63479576399396,0.49743589743589745,11400396785 +214.40446607890527,270.94947049924355,0.49865689865689866,11400401840 +215.10297171256425,255.3803328290469,0.4993894993894994,11400411780 +215.87500425502944,240.27594553706504,0.5001221001221001,11400416832 +216.64703679749465,225.28774583963693,0.5010989010989011,11400426792 +217.38230588555672,210.5319213313162,0.5025641025641026,11400431783 +218.0072846104095,196.2408472012103,0.5042735042735043,11400441782 +218.48520951764985,182.1821482602118,0.5057387057387057,11400446781 +218.8160806072778,169.28532526475038,0.5069597069597069,11400456789 +219.07342478809954,157.78275340393344,0.5079365079365079,11400461784 +219.18371515130886,147.79062027231467,0.5089133089133089,11400471781 +219.22047860571195,139.4251134644478,0.5096459096459096,11400476780 +219.14695169690575,132.33767019667172,0.5096459096459096,11400486793 +218.99989787929331,126.41210287443268,0.5089133089133089,11400491781 +218.8160806072778,121.532223903177,0.503052503052503,11400500805 +218.59549988085917,117.8142208774584,0.49230769230769234,11400506774 +218.41168260884365,114.90953101361573,0.46007326007326005,11400515804 +218.26462879123125,112.93434190620272,0.4073260073260073,11400520780 +218.15433842802193,111.65627836611195,0.3873015873015873,11400530789