diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 Binary files /dev/null and b/.DS_Store differ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9a0077614d348f0ad4411d4c8b95d53a0c663e33..11f1ae3076e176e8b161cc45bfa9e3b976729e4b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,7 +13,7 @@ before_script: - pip install virtualenv - virtualenv venv - source venv/bin/activate - - pip install numpy pandas pytest + - pip install numpy pandas pytest matplotlib test: script: - pytest diff --git a/__pycache__/bike.cpython-38.pyc b/__pycache__/bike.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..18884d098821a3fba28c73a45055666abaa3a185 Binary files /dev/null and b/__pycache__/bike.cpython-38.pyc differ diff --git a/__pycache__/plot_bike.cpython-38.pyc b/__pycache__/plot_bike.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d0e8840b29a1cdac854b7f132e5d1d270be6f5f0 Binary files /dev/null and b/__pycache__/plot_bike.cpython-38.pyc differ diff --git a/__pycache__/test_bike.cpython-38-pytest-6.1.1.pyc b/__pycache__/test_bike.cpython-38-pytest-6.1.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eba84244b648c38e2fd375691fa640581ce9188f Binary files /dev/null and b/__pycache__/test_bike.cpython-38-pytest-6.1.1.pyc differ diff --git a/plot_bike.py b/plot_bike.py new file mode 100644 index 0000000000000000000000000000000000000000..b6a3b1c563daf452610c2e2a799709b84e77f8cf --- /dev/null +++ b/plot_bike.py @@ -0,0 +1,30 @@ +import numpy as np +import matplotlib.pyplot as plt +import pandas as pd +from bike import Bike +import matplotlib.animation as animation + +def plot_bike(bike_object): + for i, p1 in enumerate(bike_object.points): + for p2 in bike_object.points[i+1:]: + plt.plot([p1[0], p2[0]], [p1[1], p2[1]], 'bo--') + + +def animate_bike(): + sim_results = pd.read_csv('simulation.txt') + x=sim_results[['x1','x2','x3','x4']].loc[0] + y=sim_results[['y1','y2','y3','y4']].loc[0] + + bike = Bike([[x[0],y[0]], [x[1],y[1]], [x[2],y[2]], [x[3],y[3]]]) + + fig, ax = plt.subplots() + + def animate(frame): + x=sim_results[['x1','x2','x3','x4']].loc[frame] + y=sim_results[['y1','y2','y3','y4']].loc[frame] + bike.points = [[x[0],y[0]], [x[1],y[1]], [x[2],y[2]], [x[3],y[3]]] + plt.clf() + plot_bike(bike) + + ani = animation.FuncAnimation(fig, animate, frames = 10, repeat=False) + plt.show() diff --git a/run_simulation.py b/run_simulation.py new file mode 100644 index 0000000000000000000000000000000000000000..4a452f841d469d50d0698dc8acb6a17433204ece --- /dev/null +++ b/run_simulation.py @@ -0,0 +1,6 @@ +from bike import Bike +from simulation import * + +initial_points = [[0, 0], [0, 1], [1, 0], [1, 1]] + +simulate(initial_points, t_step=0.1, n_steps=1000, out_steps=1, save=True) diff --git a/simulation.txt b/simulation.txt new file mode 100644 index 0000000000000000000000000000000000000000..a6aec0b3b9a71419f4c803dd999a08cbaefd1cb6 --- /dev/null +++ b/simulation.txt @@ -0,0 +1,1001 @@ +t,x1,y1,x2,y2,x3,y3,x4,y4 +0,0.00000e+00,-9.81000e-02,0.00000e+00,9.01900e-01,1.00000e+00,-9.81000e-02,1.00000e+00,9.01900e-01 +0.1,0.00000e+00,-1.96200e-01,0.00000e+00,8.03800e-01,1.00000e+00,-1.96200e-01,1.00000e+00,8.03800e-01 +0.2,-1.57009e-13,-2.94300e-01,-1.57009e-13,7.05700e-01,1.00000e+00,-2.94300e-01,1.00000e+00,7.05700e-01 +0.3,3.78597e-10,-3.92400e-01,3.78597e-10,6.07600e-01,1.00000e+00,-3.92400e-01,1.00000e+00,6.07600e-01 +0.4,-9.61360e-07,-4.90502e-01,-9.61360e-07,5.09502e-01,1.00000e+00,-4.90500e-01,1.00000e+00,5.09500e-01 +0.5,2.52442e-03,-5.82902e-01,2.52442e-03,4.05702e-01,9.99937e-01,-5.88561e-01,9.99937e-01,4.11361e-01 +0.6,-6.73654e+00,-1.62165e+01,-6.73654e+00,1.58431e+01,1.16841e+00,-7.92848e-01,1.16841e+00,4.19448e-01 +0.7,1.47401e+04,6.09358e+04,1.47401e+04,-6.09364e+04,-3.67503e+02,2.50384e+01,-3.67503e+02,-2.56080e+01 +0.8,-3.01999e+07,-2.43680e+08,-3.01999e+07,2.43680e+08,7.54999e+05,-2.47233e+03,7.54999e+05,2.47156e+03 +0.9,6.18796e+10,9.74477e+11,6.18796e+10,-9.74477e+11,-1.54699e+09,2.44687e+05,-1.54699e+09,-2.44688e+05 +1,-1.26791e+14,-3.89693e+15,-1.26791e+14,3.89693e+15,3.16978e+12,-2.42240e+07,3.16978e+12,2.42240e+07 +1.1,2.59795e+17,1.55838e+19,2.59795e+17,-1.55838e+19,-6.49488e+15,2.39818e+09,-6.49488e+15,-2.39818e+09 +1.2,-5.32321e+20,-6.23198e+22,-5.32321e+20,6.23198e+22,1.33080e+19,-2.37420e+11,1.33080e+19,2.37420e+11 +1.3,1.09073e+24,2.49217e+26,1.09073e+24,-2.49217e+26,-2.72681e+22,2.35053e+13,-2.72681e+22,-2.35047e+13 +1.4,-2.23490e+27,-9.96618e+29,-2.23490e+27,9.96618e+29,5.58724e+25,-2.32944e+15,5.58724e+25,2.32493e+15 +1.5,4.57930e+30,3.98547e+33,4.57930e+30,-3.98547e+33,-1.14483e+29,2.47769e+17,-1.14483e+29,-2.20103e+17 +1.6,-9.38299e+33,-1.59379e+37,-9.38299e+33,1.59379e+37,2.34575e+32,-3.03385e+19,2.34575e+32,-7.41278e+18 +1.7,1.92257e+37,6.37357e+40,1.92257e+37,-6.37357e+40,-4.80644e+35,5.42804e+20,-4.80644e+35,-5.80556e+20 +1.8,-3.93936e+40,-2.54879e+44,-3.93936e+40,2.54879e+44,9.84839e+38,-2.75412e+22,9.84839e+38,2.75034e+22 +1.9,8.07174e+43,1.01926e+48,8.07174e+43,-1.01926e+48,-2.01793e+42,1.34857e+24,-2.01793e+42,-1.34861e+24 +2,-1.65390e+47,-4.07603e+51,-1.65390e+47,4.07603e+51,4.13475e+45,-6.60811e+25,4.13475e+45,6.60811e+25 +2.1,3.38884e+50,1.63000e+55,3.38884e+50,-1.63000e+55,-8.47210e+48,3.23797e+27,-8.47210e+48,-3.23797e+27 +2.2,-6.94373e+53,-6.51838e+58,-6.94373e+53,6.51838e+58,1.73593e+52,-1.58661e+29,1.73593e+52,1.58661e+29 +2.3,1.42277e+57,2.60670e+62,1.42277e+57,-2.60670e+62,-3.55693e+55,7.77437e+30,-3.55693e+55,-7.77437e+30 +2.4,-2.91526e+60,-1.04242e+66,-2.91526e+60,1.04242e+66,7.28814e+58,-3.80944e+32,7.28814e+58,3.80944e+32 +2.5,5.97336e+63,4.16864e+69,5.97336e+63,-4.16864e+69,-1.49334e+62,1.86663e+34,-1.49334e+62,-1.86663e+34 +2.6,-1.22394e+67,-1.66704e+73,-1.22394e+67,1.66704e+73,3.05985e+65,-9.14647e+35,3.05985e+65,9.14647e+35 +2.7,2.50786e+70,6.66648e+76,2.50786e+70,-6.66648e+76,-6.26964e+68,4.48177e+37,-6.26964e+68,-4.48177e+37 +2.8,-5.13860e+73,-2.66593e+80,-5.13860e+73,2.66593e+80,1.28465e+72,-2.19607e+39,1.28465e+72,2.19607e+39 +2.9,1.05290e+77,1.06610e+84,1.05290e+77,-1.06610e+84,-2.63225e+75,1.07607e+41,-2.63225e+75,-1.07607e+41 +3,-2.15739e+80,-4.26335e+87,-2.15739e+80,4.26335e+87,5.39347e+78,-5.27276e+42,5.39347e+78,5.27276e+42 +3.1,4.42049e+83,1.70491e+91,4.42049e+83,-1.70491e+91,-1.10512e+82,2.58365e+44,-1.10512e+82,-2.58365e+44 +3.2,-9.05759e+86,-6.81795e+94,-9.05759e+86,6.81795e+94,2.26440e+85,-1.26599e+46,2.26440e+85,1.26599e+46 +3.3,1.85590e+90,2.72650e+98,1.85590e+90,-2.72650e+98,-4.63975e+88,6.20335e+47,-4.63975e+88,-6.20335e+47 +3.4,-3.80274e+93,-1.09033e+102,-3.80274e+93,1.09033e+102,9.50685e+91,-3.03964e+49,9.50685e+91,3.03964e+49 +3.5,7.79181e+96,4.36022e+105,7.79181e+96,-4.36022e+105,-1.94795e+95,1.48942e+51,-1.94795e+95,-1.48942e+51 +3.6,-1.59654e+100,-1.74365e+109,-1.59654e+100,1.74365e+109,3.99136e+98,-7.29818e+52,3.99136e+98,7.29818e+52 +3.7,3.27131e+103,6.97286e+112,3.27131e+103,-6.97286e+112,-8.17829e+101,3.57611e+54,-8.17829e+101,-3.57611e+54 +3.8,-6.70292e+106,-2.78845e+116,-6.70292e+106,2.78845e+116,1.67573e+105,-1.75229e+56,1.67573e+105,1.75229e+56 +3.9,1.37343e+110,1.11510e+120,1.37343e+110,-1.11510e+120,-3.43357e+108,8.58623e+57,-3.43357e+108,-8.58623e+57 +4,-2.81416e+113,-4.45928e+123,-2.81416e+113,4.45928e+123,7.03539e+111,-4.20725e+59,7.03539e+111,4.20725e+59 +4.1,5.76621e+116,1.78327e+127,5.76620e+116,-1.78327e+127,-1.44155e+115,2.06155e+61,-1.44155e+115,-2.06155e+61 +4.2,-1.18150e+120,-7.13129e+130,-1.18149e+120,7.13129e+130,2.95374e+118,-1.01016e+63,2.95374e+118,1.01016e+63 +4.3,2.42089e+123,2.85180e+134,2.42088e+123,-2.85180e+134,-6.05221e+121,4.94979e+64,-6.05221e+121,-4.94979e+64 +4.4,-4.96040e+126,-1.14044e+138,-4.96038e+126,1.14044e+138,1.24010e+125,-2.42540e+66,1.24010e+125,2.42540e+66 +4.5,1.01639e+130,4.56060e+141,1.01638e+130,-4.56060e+141,-2.54096e+128,1.18845e+68,-2.54096e+128,-1.18845e+68 +4.6,-2.08259e+133,-1.82378e+145,-2.08255e+133,1.82378e+145,5.20643e+131,-5.82338e+69,5.20643e+131,5.82338e+69 +4.7,4.26727e+136,7.29331e+148,4.26711e+136,-7.29331e+148,-1.06680e+135,2.85346e+71,-1.06680e+135,-2.85346e+71 +4.8,-8.74378e+139,-2.91660e+152,-8.74316e+139,2.91660e+152,2.18587e+138,-1.39819e+73,2.18587e+138,1.39819e+73 +4.9,1.79166e+143,1.16635e+156,1.79141e+143,-1.16635e+156,-4.47884e+141,6.85115e+74,-4.47884e+141,-6.85115e+74 +5,,,,,,,, +5.1,,,,,,,, +5.2,,,,,,,, +5.3,,,,,,,, +5.4,,,,,,,, +5.5,,,,,,,, +5.6,,,,,,,, +5.7,,,,,,,, +5.8,,,,,,,, +5.9,,,,,,,, +6,,,,,,,, +6.1,,,,,,,, +6.2,,,,,,,, +6.3,,,,,,,, +6.4,,,,,,,, +6.5,,,,,,,, +6.6,,,,,,,, +6.7,,,,,,,, +6.8,,,,,,,, +6.9,,,,,,,, +7,,,,,,,, +7.1,,,,,,,, +7.2,,,,,,,, +7.3,,,,,,,, +7.4,,,,,,,, +7.5,,,,,,,, +7.6,,,,,,,, +7.7,,,,,,,, +7.8,,,,,,,, +7.9,,,,,,,, +8,,,,,,,, +8.1,,,,,,,, +8.2,,,,,,,, +8.3,,,,,,,, +8.4,,,,,,,, +8.5,,,,,,,, +8.6,,,,,,,, +8.7,,,,,,,, +8.8,,,,,,,, +8.9,,,,,,,, +9,,,,,,,, +9.1,,,,,,,, +9.2,,,,,,,, +9.3,,,,,,,, +9.4,,,,,,,, +9.5,,,,,,,, +9.6,,,,,,,, +9.7,,,,,,,, +9.8,,,,,,,, +9.9,,,,,,,, +10,,,,,,,, +10.1,,,,,,,, +10.2,,,,,,,, +10.3,,,,,,,, +10.4,,,,,,,, +10.5,,,,,,,, +10.6,,,,,,,, +10.7,,,,,,,, +10.8,,,,,,,, +10.9,,,,,,,, +11,,,,,,,, +11.1,,,,,,,, +11.2,,,,,,,, +11.3,,,,,,,, +11.4,,,,,,,, +11.5,,,,,,,, +11.6,,,,,,,, +11.7,,,,,,,, +11.8,,,,,,,, +11.9,,,,,,,, +12,,,,,,,, +12.1,,,,,,,, +12.2,,,,,,,, +12.3,,,,,,,, +12.4,,,,,,,, +12.5,,,,,,,, +12.6,,,,,,,, +12.7,,,,,,,, +12.8,,,,,,,, +12.9,,,,,,,, +13,,,,,,,, +13.1,,,,,,,, +13.2,,,,,,,, +13.3,,,,,,,, +13.4,,,,,,,, +13.5,,,,,,,, +13.6,,,,,,,, +13.7,,,,,,,, +13.8,,,,,,,, +13.9,,,,,,,, +14,,,,,,,, +14.1,,,,,,,, +14.2,,,,,,,, +14.3,,,,,,,, +14.4,,,,,,,, +14.5,,,,,,,, +14.6,,,,,,,, +14.7,,,,,,,, +14.8,,,,,,,, +14.9,,,,,,,, +15,,,,,,,, +15.1,,,,,,,, +15.2,,,,,,,, +15.3,,,,,,,, +15.4,,,,,,,, +15.5,,,,,,,, +15.6,,,,,,,, +15.7,,,,,,,, +15.8,,,,,,,, +15.9,,,,,,,, +16,,,,,,,, +16.1,,,,,,,, +16.2,,,,,,,, +16.3,,,,,,,, +16.4,,,,,,,, +16.5,,,,,,,, +16.6,,,,,,,, +16.7,,,,,,,, +16.8,,,,,,,, +16.9,,,,,,,, +17,,,,,,,, +17.1,,,,,,,, +17.2,,,,,,,, +17.3,,,,,,,, +17.4,,,,,,,, +17.5,,,,,,,, +17.6,,,,,,,, +17.7,,,,,,,, +17.8,,,,,,,, +17.9,,,,,,,, +18,,,,,,,, +18.1,,,,,,,, +18.2,,,,,,,, +18.3,,,,,,,, +18.4,,,,,,,, +18.5,,,,,,,, +18.6,,,,,,,, +18.7,,,,,,,, +18.8,,,,,,,, +18.9,,,,,,,, +19,,,,,,,, +19.1,,,,,,,, +19.2,,,,,,,, +19.3,,,,,,,, +19.4,,,,,,,, +19.5,,,,,,,, +19.6,,,,,,,, +19.7,,,,,,,, +19.8,,,,,,,, +19.9,,,,,,,, +20,,,,,,,, +20.1,,,,,,,, +20.2,,,,,,,, +20.3,,,,,,,, +20.4,,,,,,,, +20.5,,,,,,,, +20.6,,,,,,,, +20.7,,,,,,,, +20.8,,,,,,,, +20.9,,,,,,,, +21,,,,,,,, +21.1,,,,,,,, +21.2,,,,,,,, +21.3,,,,,,,, +21.4,,,,,,,, +21.5,,,,,,,, +21.6,,,,,,,, +21.7,,,,,,,, +21.8,,,,,,,, +21.9,,,,,,,, +22,,,,,,,, +22.1,,,,,,,, +22.2,,,,,,,, +22.3,,,,,,,, +22.4,,,,,,,, +22.5,,,,,,,, +22.6,,,,,,,, +22.7,,,,,,,, +22.8,,,,,,,, +22.9,,,,,,,, +23,,,,,,,, +23.1,,,,,,,, +23.2,,,,,,,, +23.3,,,,,,,, +23.4,,,,,,,, +23.5,,,,,,,, +23.6,,,,,,,, +23.7,,,,,,,, +23.8,,,,,,,, +23.9,,,,,,,, +24,,,,,,,, +24.1,,,,,,,, +24.2,,,,,,,, +24.3,,,,,,,, +24.4,,,,,,,, +24.5,,,,,,,, +24.6,,,,,,,, +24.7,,,,,,,, +24.8,,,,,,,, +24.9,,,,,,,, +25,,,,,,,, +25.1,,,,,,,, +25.2,,,,,,,, +25.3,,,,,,,, +25.4,,,,,,,, +25.5,,,,,,,, +25.6,,,,,,,, +25.7,,,,,,,, +25.8,,,,,,,, +25.9,,,,,,,, +26,,,,,,,, +26.1,,,,,,,, +26.2,,,,,,,, +26.3,,,,,,,, +26.4,,,,,,,, +26.5,,,,,,,, +26.6,,,,,,,, +26.7,,,,,,,, +26.8,,,,,,,, +26.9,,,,,,,, +27,,,,,,,, +27.1,,,,,,,, +27.2,,,,,,,, +27.3,,,,,,,, +27.4,,,,,,,, +27.5,,,,,,,, +27.6,,,,,,,, +27.7,,,,,,,, +27.8,,,,,,,, +27.9,,,,,,,, +28,,,,,,,, +28.1,,,,,,,, +28.2,,,,,,,, +28.3,,,,,,,, +28.4,,,,,,,, +28.5,,,,,,,, +28.6,,,,,,,, +28.7,,,,,,,, +28.8,,,,,,,, +28.9,,,,,,,, +29,,,,,,,, +29.1,,,,,,,, +29.2,,,,,,,, +29.3,,,,,,,, +29.4,,,,,,,, +29.5,,,,,,,, +29.6,,,,,,,, +29.7,,,,,,,, +29.8,,,,,,,, +29.9,,,,,,,, +30,,,,,,,, +30.1,,,,,,,, +30.2,,,,,,,, +30.3,,,,,,,, +30.4,,,,,,,, +30.5,,,,,,,, +30.6,,,,,,,, +30.7,,,,,,,, +30.8,,,,,,,, +30.9,,,,,,,, +31,,,,,,,, +31.1,,,,,,,, +31.2,,,,,,,, +31.3,,,,,,,, +31.4,,,,,,,, +31.5,,,,,,,, +31.6,,,,,,,, +31.7,,,,,,,, +31.8,,,,,,,, +31.9,,,,,,,, +32,,,,,,,, +32.1,,,,,,,, +32.2,,,,,,,, +32.3,,,,,,,, +32.4,,,,,,,, +32.5,,,,,,,, +32.6,,,,,,,, +32.7,,,,,,,, +32.8,,,,,,,, +32.9,,,,,,,, +33,,,,,,,, +33.1,,,,,,,, +33.2,,,,,,,, +33.3,,,,,,,, +33.4,,,,,,,, +33.5,,,,,,,, +33.6,,,,,,,, +33.7,,,,,,,, +33.8,,,,,,,, +33.9,,,,,,,, +34,,,,,,,, +34.1,,,,,,,, +34.2,,,,,,,, +34.3,,,,,,,, +34.4,,,,,,,, +34.5,,,,,,,, +34.6,,,,,,,, +34.7,,,,,,,, +34.8,,,,,,,, +34.9,,,,,,,, +35,,,,,,,, +35.1,,,,,,,, +35.2,,,,,,,, +35.3,,,,,,,, +35.4,,,,,,,, +35.5,,,,,,,, +35.6,,,,,,,, +35.7,,,,,,,, +35.8,,,,,,,, +35.9,,,,,,,, +36,,,,,,,, +36.1,,,,,,,, +36.2,,,,,,,, +36.3,,,,,,,, +36.4,,,,,,,, +36.5,,,,,,,, +36.6,,,,,,,, +36.7,,,,,,,, +36.8,,,,,,,, +36.9,,,,,,,, +37,,,,,,,, +37.1,,,,,,,, +37.2,,,,,,,, +37.3,,,,,,,, +37.4,,,,,,,, +37.5,,,,,,,, +37.6,,,,,,,, +37.7,,,,,,,, +37.8,,,,,,,, +37.9,,,,,,,, +38,,,,,,,, +38.1,,,,,,,, +38.2,,,,,,,, +38.3,,,,,,,, +38.4,,,,,,,, +38.5,,,,,,,, +38.6,,,,,,,, +38.7,,,,,,,, +38.8,,,,,,,, +38.9,,,,,,,, +39,,,,,,,, +39.1,,,,,,,, +39.2,,,,,,,, +39.3,,,,,,,, +39.4,,,,,,,, +39.5,,,,,,,, +39.6,,,,,,,, +39.7,,,,,,,, +39.8,,,,,,,, +39.9,,,,,,,, +40,,,,,,,, +40.1,,,,,,,, +40.2,,,,,,,, +40.3,,,,,,,, +40.4,,,,,,,, +40.5,,,,,,,, +40.6,,,,,,,, +40.7,,,,,,,, +40.8,,,,,,,, +40.9,,,,,,,, +41,,,,,,,, +41.1,,,,,,,, +41.2,,,,,,,, +41.3,,,,,,,, +41.4,,,,,,,, +41.5,,,,,,,, +41.6,,,,,,,, +41.7,,,,,,,, +41.8,,,,,,,, +41.9,,,,,,,, +42,,,,,,,, +42.1,,,,,,,, +42.2,,,,,,,, +42.3,,,,,,,, +42.4,,,,,,,, +42.5,,,,,,,, +42.6,,,,,,,, +42.7,,,,,,,, +42.8,,,,,,,, +42.9,,,,,,,, +43,,,,,,,, +43.1,,,,,,,, +43.2,,,,,,,, +43.3,,,,,,,, +43.4,,,,,,,, +43.5,,,,,,,, +43.6,,,,,,,, +43.7,,,,,,,, +43.8,,,,,,,, +43.9,,,,,,,, +44,,,,,,,, +44.1,,,,,,,, +44.2,,,,,,,, +44.3,,,,,,,, +44.4,,,,,,,, +44.5,,,,,,,, +44.6,,,,,,,, +44.7,,,,,,,, +44.8,,,,,,,, +44.9,,,,,,,, +45,,,,,,,, +45.1,,,,,,,, +45.2,,,,,,,, +45.3,,,,,,,, +45.4,,,,,,,, +45.5,,,,,,,, +45.6,,,,,,,, +45.7,,,,,,,, +45.8,,,,,,,, +45.9,,,,,,,, +46,,,,,,,, +46.1,,,,,,,, +46.2,,,,,,,, +46.3,,,,,,,, +46.4,,,,,,,, +46.5,,,,,,,, +46.6,,,,,,,, +46.7,,,,,,,, +46.8,,,,,,,, +46.9,,,,,,,, +47,,,,,,,, +47.1,,,,,,,, +47.2,,,,,,,, +47.3,,,,,,,, +47.4,,,,,,,, +47.5,,,,,,,, +47.6,,,,,,,, +47.7,,,,,,,, +47.8,,,,,,,, +47.9,,,,,,,, +48,,,,,,,, +48.1,,,,,,,, +48.2,,,,,,,, +48.3,,,,,,,, +48.4,,,,,,,, +48.5,,,,,,,, +48.6,,,,,,,, +48.7,,,,,,,, +48.8,,,,,,,, +48.9,,,,,,,, +49,,,,,,,, +49.1,,,,,,,, +49.2,,,,,,,, +49.3,,,,,,,, +49.4,,,,,,,, +49.5,,,,,,,, +49.6,,,,,,,, +49.7,,,,,,,, +49.8,,,,,,,, +49.9,,,,,,,, +50,,,,,,,, +50.1,,,,,,,, +50.2,,,,,,,, +50.3,,,,,,,, +50.4,,,,,,,, +50.5,,,,,,,, +50.6,,,,,,,, +50.7,,,,,,,, +50.8,,,,,,,, +50.9,,,,,,,, +51,,,,,,,, +51.1,,,,,,,, +51.2,,,,,,,, +51.3,,,,,,,, +51.4,,,,,,,, +51.5,,,,,,,, +51.6,,,,,,,, +51.7,,,,,,,, +51.8,,,,,,,, +51.9,,,,,,,, +52,,,,,,,, +52.1,,,,,,,, +52.2,,,,,,,, +52.3,,,,,,,, +52.4,,,,,,,, +52.5,,,,,,,, +52.6,,,,,,,, +52.7,,,,,,,, +52.8,,,,,,,, +52.9,,,,,,,, +53,,,,,,,, +53.1,,,,,,,, +53.2,,,,,,,, +53.3,,,,,,,, +53.4,,,,,,,, +53.5,,,,,,,, +53.6,,,,,,,, +53.7,,,,,,,, +53.8,,,,,,,, +53.9,,,,,,,, +54,,,,,,,, +54.1,,,,,,,, +54.2,,,,,,,, +54.3,,,,,,,, +54.4,,,,,,,, +54.5,,,,,,,, +54.6,,,,,,,, +54.7,,,,,,,, +54.8,,,,,,,, +54.9,,,,,,,, +55,,,,,,,, +55.1,,,,,,,, +55.2,,,,,,,, +55.3,,,,,,,, +55.4,,,,,,,, +55.5,,,,,,,, +55.6,,,,,,,, +55.7,,,,,,,, +55.8,,,,,,,, +55.9,,,,,,,, +56,,,,,,,, +56.1,,,,,,,, +56.2,,,,,,,, +56.3,,,,,,,, +56.4,,,,,,,, +56.5,,,,,,,, +56.6,,,,,,,, +56.7,,,,,,,, +56.8,,,,,,,, +56.9,,,,,,,, +57,,,,,,,, +57.1,,,,,,,, +57.2,,,,,,,, +57.3,,,,,,,, +57.4,,,,,,,, +57.5,,,,,,,, +57.6,,,,,,,, +57.7,,,,,,,, +57.8,,,,,,,, +57.9,,,,,,,, +58,,,,,,,, +58.1,,,,,,,, +58.2,,,,,,,, +58.3,,,,,,,, +58.4,,,,,,,, +58.5,,,,,,,, +58.6,,,,,,,, +58.7,,,,,,,, +58.8,,,,,,,, +58.9,,,,,,,, +59,,,,,,,, +59.1,,,,,,,, +59.2,,,,,,,, +59.3,,,,,,,, +59.4,,,,,,,, +59.5,,,,,,,, +59.6,,,,,,,, +59.7,,,,,,,, +59.8,,,,,,,, +59.9,,,,,,,, +60,,,,,,,, +60.1,,,,,,,, +60.2,,,,,,,, +60.3,,,,,,,, +60.4,,,,,,,, +60.5,,,,,,,, +60.6,,,,,,,, +60.7,,,,,,,, +60.8,,,,,,,, +60.9,,,,,,,, +61,,,,,,,, +61.1,,,,,,,, +61.2,,,,,,,, +61.3,,,,,,,, +61.4,,,,,,,, +61.5,,,,,,,, +61.6,,,,,,,, +61.7,,,,,,,, +61.8,,,,,,,, +61.9,,,,,,,, +62,,,,,,,, +62.1,,,,,,,, +62.2,,,,,,,, +62.3,,,,,,,, +62.4,,,,,,,, +62.5,,,,,,,, +62.6,,,,,,,, +62.7,,,,,,,, +62.8,,,,,,,, +62.9,,,,,,,, +63,,,,,,,, +63.1,,,,,,,, +63.2,,,,,,,, +63.3,,,,,,,, +63.4,,,,,,,, +63.5,,,,,,,, +63.6,,,,,,,, +63.7,,,,,,,, +63.8,,,,,,,, +63.9,,,,,,,, +64,,,,,,,, +64.1,,,,,,,, +64.2,,,,,,,, +64.3,,,,,,,, +64.4,,,,,,,, +64.5,,,,,,,, +64.6,,,,,,,, +64.7,,,,,,,, +64.8,,,,,,,, +64.9,,,,,,,, +65,,,,,,,, +65.1,,,,,,,, +65.2,,,,,,,, +65.3,,,,,,,, +65.4,,,,,,,, +65.5,,,,,,,, +65.6,,,,,,,, +65.7,,,,,,,, +65.8,,,,,,,, +65.9,,,,,,,, +66,,,,,,,, +66.1,,,,,,,, +66.2,,,,,,,, +66.3,,,,,,,, +66.4,,,,,,,, +66.5,,,,,,,, +66.6,,,,,,,, +66.7,,,,,,,, +66.8,,,,,,,, +66.9,,,,,,,, +67,,,,,,,, +67.1,,,,,,,, +67.2,,,,,,,, +67.3,,,,,,,, +67.4,,,,,,,, +67.5,,,,,,,, +67.6,,,,,,,, +67.7,,,,,,,, +67.8,,,,,,,, +67.9,,,,,,,, +68,,,,,,,, +68.1,,,,,,,, +68.2,,,,,,,, +68.3,,,,,,,, +68.4,,,,,,,, +68.5,,,,,,,, +68.6,,,,,,,, +68.7,,,,,,,, +68.8,,,,,,,, +68.9,,,,,,,, +69,,,,,,,, +69.1,,,,,,,, +69.2,,,,,,,, +69.3,,,,,,,, +69.4,,,,,,,, +69.5,,,,,,,, +69.6,,,,,,,, +69.7,,,,,,,, +69.8,,,,,,,, +69.9,,,,,,,, +70,,,,,,,, +70.1,,,,,,,, +70.2,,,,,,,, +70.3,,,,,,,, +70.4,,,,,,,, +70.5,,,,,,,, +70.6,,,,,,,, +70.7,,,,,,,, +70.8,,,,,,,, +70.9,,,,,,,, +71,,,,,,,, +71.1,,,,,,,, +71.2,,,,,,,, +71.3,,,,,,,, +71.4,,,,,,,, +71.5,,,,,,,, +71.6,,,,,,,, +71.7,,,,,,,, +71.8,,,,,,,, +71.9,,,,,,,, +72,,,,,,,, +72.1,,,,,,,, +72.2,,,,,,,, +72.3,,,,,,,, +72.4,,,,,,,, +72.5,,,,,,,, +72.6,,,,,,,, +72.7,,,,,,,, +72.8,,,,,,,, +72.9,,,,,,,, +73,,,,,,,, +73.1,,,,,,,, +73.2,,,,,,,, +73.3,,,,,,,, +73.4,,,,,,,, +73.5,,,,,,,, +73.6,,,,,,,, +73.7,,,,,,,, +73.8,,,,,,,, +73.9,,,,,,,, +74,,,,,,,, +74.1,,,,,,,, +74.2,,,,,,,, +74.3,,,,,,,, +74.4,,,,,,,, +74.5,,,,,,,, +74.6,,,,,,,, +74.7,,,,,,,, +74.8,,,,,,,, +74.9,,,,,,,, +75,,,,,,,, +75.1,,,,,,,, +75.2,,,,,,,, +75.3,,,,,,,, +75.4,,,,,,,, +75.5,,,,,,,, +75.6,,,,,,,, +75.7,,,,,,,, +75.8,,,,,,,, +75.9,,,,,,,, +76,,,,,,,, +76.1,,,,,,,, +76.2,,,,,,,, +76.3,,,,,,,, +76.4,,,,,,,, +76.5,,,,,,,, +76.6,,,,,,,, +76.7,,,,,,,, +76.8,,,,,,,, +76.9,,,,,,,, +77,,,,,,,, +77.1,,,,,,,, +77.2,,,,,,,, +77.3,,,,,,,, +77.4,,,,,,,, +77.5,,,,,,,, +77.6,,,,,,,, +77.7,,,,,,,, +77.8,,,,,,,, +77.9,,,,,,,, +78,,,,,,,, +78.1,,,,,,,, +78.2,,,,,,,, +78.3,,,,,,,, +78.4,,,,,,,, +78.5,,,,,,,, +78.6,,,,,,,, +78.7,,,,,,,, +78.8,,,,,,,, +78.9,,,,,,,, +79,,,,,,,, +79.1,,,,,,,, +79.2,,,,,,,, +79.3,,,,,,,, +79.4,,,,,,,, +79.5,,,,,,,, +79.6,,,,,,,, +79.7,,,,,,,, +79.8,,,,,,,, +79.9,,,,,,,, +80,,,,,,,, +80.1,,,,,,,, +80.2,,,,,,,, +80.3,,,,,,,, +80.4,,,,,,,, +80.5,,,,,,,, +80.6,,,,,,,, +80.7,,,,,,,, +80.8,,,,,,,, +80.9,,,,,,,, +81,,,,,,,, +81.1,,,,,,,, +81.2,,,,,,,, +81.3,,,,,,,, +81.4,,,,,,,, +81.5,,,,,,,, +81.6,,,,,,,, +81.7,,,,,,,, +81.8,,,,,,,, +81.9,,,,,,,, +82,,,,,,,, +82.1,,,,,,,, +82.2,,,,,,,, +82.3,,,,,,,, +82.4,,,,,,,, +82.5,,,,,,,, +82.6,,,,,,,, +82.7,,,,,,,, +82.8,,,,,,,, +82.9,,,,,,,, +83,,,,,,,, +83.1,,,,,,,, +83.2,,,,,,,, +83.3,,,,,,,, +83.4,,,,,,,, +83.5,,,,,,,, +83.6,,,,,,,, +83.7,,,,,,,, +83.8,,,,,,,, +83.9,,,,,,,, +84,,,,,,,, +84.1,,,,,,,, +84.2,,,,,,,, +84.3,,,,,,,, +84.4,,,,,,,, +84.5,,,,,,,, +84.6,,,,,,,, +84.7,,,,,,,, +84.8,,,,,,,, +84.9,,,,,,,, +85,,,,,,,, +85.1,,,,,,,, +85.2,,,,,,,, +85.3,,,,,,,, +85.4,,,,,,,, +85.5,,,,,,,, +85.6,,,,,,,, +85.7,,,,,,,, +85.8,,,,,,,, +85.9,,,,,,,, +86,,,,,,,, +86.1,,,,,,,, +86.2,,,,,,,, +86.3,,,,,,,, +86.4,,,,,,,, +86.5,,,,,,,, +86.6,,,,,,,, +86.7,,,,,,,, +86.8,,,,,,,, +86.9,,,,,,,, +87,,,,,,,, +87.1,,,,,,,, +87.2,,,,,,,, +87.3,,,,,,,, +87.4,,,,,,,, +87.5,,,,,,,, +87.6,,,,,,,, +87.7,,,,,,,, +87.8,,,,,,,, +87.9,,,,,,,, +88,,,,,,,, +88.1,,,,,,,, +88.2,,,,,,,, +88.3,,,,,,,, +88.4,,,,,,,, +88.5,,,,,,,, +88.6,,,,,,,, +88.7,,,,,,,, +88.8,,,,,,,, +88.9,,,,,,,, +89,,,,,,,, +89.1,,,,,,,, +89.2,,,,,,,, +89.3,,,,,,,, +89.4,,,,,,,, +89.5,,,,,,,, +89.6,,,,,,,, +89.7,,,,,,,, +89.8,,,,,,,, +89.9,,,,,,,, +90,,,,,,,, +90.1,,,,,,,, +90.2,,,,,,,, +90.3,,,,,,,, +90.4,,,,,,,, +90.5,,,,,,,, +90.6,,,,,,,, +90.7,,,,,,,, +90.8,,,,,,,, +90.9,,,,,,,, +91,,,,,,,, +91.1,,,,,,,, +91.2,,,,,,,, +91.3,,,,,,,, +91.4,,,,,,,, +91.5,,,,,,,, +91.6,,,,,,,, +91.7,,,,,,,, +91.8,,,,,,,, +91.9,,,,,,,, +92,,,,,,,, +92.1,,,,,,,, +92.2,,,,,,,, +92.3,,,,,,,, +92.4,,,,,,,, +92.5,,,,,,,, +92.6,,,,,,,, +92.7,,,,,,,, +92.8,,,,,,,, +92.9,,,,,,,, +93,,,,,,,, +93.1,,,,,,,, +93.2,,,,,,,, +93.3,,,,,,,, +93.4,,,,,,,, +93.5,,,,,,,, +93.6,,,,,,,, +93.7,,,,,,,, +93.8,,,,,,,, +93.9,,,,,,,, +94,,,,,,,, +94.1,,,,,,,, +94.2,,,,,,,, +94.3,,,,,,,, +94.4,,,,,,,, +94.5,,,,,,,, +94.6,,,,,,,, +94.7,,,,,,,, +94.8,,,,,,,, +94.9,,,,,,,, +95,,,,,,,, +95.1,,,,,,,, +95.2,,,,,,,, +95.3,,,,,,,, +95.4,,,,,,,, +95.5,,,,,,,, +95.6,,,,,,,, +95.7,,,,,,,, +95.8,,,,,,,, +95.9,,,,,,,, +96,,,,,,,, +96.1,,,,,,,, +96.2,,,,,,,, +96.3,,,,,,,, +96.4,,,,,,,, +96.5,,,,,,,, +96.6,,,,,,,, +96.7,,,,,,,, +96.8,,,,,,,, +96.9,,,,,,,, +97,,,,,,,, +97.1,,,,,,,, +97.2,,,,,,,, +97.3,,,,,,,, +97.4,,,,,,,, +97.5,,,,,,,, +97.6,,,,,,,, +97.7,,,,,,,, +97.8,,,,,,,, +97.9,,,,,,,, +98,,,,,,,, +98.1,,,,,,,, +98.2,,,,,,,, +98.3,,,,,,,, +98.4,,,,,,,, +98.5,,,,,,,, +98.6,,,,,,,, +98.7,,,,,,,, +98.8,,,,,,,, +98.9,,,,,,,, +99,,,,,,,, +99.1,,,,,,,, +99.2,,,,,,,, +99.3,,,,,,,, +99.4,,,,,,,, +99.5,,,,,,,, +99.6,,,,,,,, +99.7,,,,,,,, +99.8,,,,,,,, +99.9,,,,,,,, diff --git a/test_bike.py b/test_bike.py index a2af3554d4526cc2c2a1dc1f287b80590434a110..fdf78c633a104354c6e047fc98086102e034e4e0 100644 --- a/test_bike.py +++ b/test_bike.py @@ -1,5 +1,6 @@ from bike import * import numpy as np +import matplotlib.pyplot as plt def test_bike_class_exists(): bike = Bike(np.zeros((4,2))) @@ -18,6 +19,15 @@ def test_bike_length_initialises_properly(): assert np.all(bike.points == [[0, 0], [0, 1], [1, 0], [1, 1]]) assert np.all(bike.lengths == [1, 1, np.sqrt(2), np.sqrt(2), 1, 1]) +def test_plot_bike(): + from plot_bike import plot_bike + bike = Bike([[0, 0], [0, 1], [1, 0], [1, 1]]) + fig = plot_bike(bike) + #plt.show(block=False) + #plt.pause(1) + #plt.close() + assert True + def test_bike_pair_list(): bike = Bike([[0, 0], [0, 1], [1, 0], [1, 1]]) assert np.all(bike.pairs == [[0, 1], [0, 2], [0, 3], [1, 2], [1, 3], [2, 3]]) @@ -33,7 +43,3 @@ def test_forces(): g = 9.81 assert np.allclose(bike.force(), [[0, -bike.masses[0]*g], [0, -bike.masses[1]*g], [0, 0-bike.masses[2]*g], [0, -bike.masses[3]*g]]) -def test_bike_position(): - bike = Bike([[0, 0], [1, 0], [0, 0.5], [1, 1]]) - xpos = bike.get_position() - assert xpos == 0.5