#include <stdio.h>

// stałe fizyczne
const double ro = 1.25; // gestosc powietrza [kg/m^3]
const double g  = 9.81; // przyspieszenie ziemskie [m/s^2]

double Faero(double S, double C, double v) { return v*v*S*C*ro/2; }

int main(void) {
// parametry eksperymentu stale w czasie
double m1 = 0.2; // masa ciala 1 [kg]
double m2 = 1.3; // masa ciala 2 [kg]

double Cx1  =  0.1; // wspolczynnik oporu ciala 1
double Cx2 =   0.1;

double S_1 = 0.006; // pole poprzecznego przekroju [m^2]
double S_2 = 0.006;

double dt    = 0.1;  // modelowy odcinek czasu [s]
double Tmax = 10.0;  // limit czasu [s]

// zmienne w czasie
double a1 = 0.0; // przyspieszenie [m/s^2]
double a2 = 0.0;
double f1 = 0.0; // sila oporu [N]
double f2 = 0.0;
double v1 = 0.0; // predkosc [m/s]
double v2 = 0.0;
double s1 = 0.0; // droga [m]
double s2 = 0.0;

for(double t=0; t<Tmax; t+=dt) {
f1 = Faero(S_1, Cx1, v1); // opor liczony dla predkosci z poprzedniego kroku
f2 = Faero(S_2, Cx2, v2);
a1 = (m1*g - f1) / m1; // przyspieszenie = (ciezar - opor) / mase
a2 = (m2*g - f2) / m2;
double v1p = v1; // predkosc poczatkowa w kroku - do policzenia sredniej
double v2p = v2;
v1 += a1*dt; // predkosc wzrasta o 'przyspieszenie * czas_kroku'
v2 += a2*dt;
s1 += (v1p + v1)/2 * dt; // droga wzrasta o 'sredna_predkosc * czas_kroku'
s2 += (v2p + v2)/2 * dt;
printf("%3.2fs f[%6.2f,%6.2f] a[%4.2f,%4.2f] v[%5.2f,%5.2f] s[%5.2f,%5.2f]\n",
       t+dt, f1,f2, a1,a2, v1,v2, s1,s2);
}

return 0;
}


