diff --git a/apps/code/script_store.cpp b/apps/code/script_store.cpp index 705ba3506..e21047d7c 100644 --- a/apps/code/script_store.cpp +++ b/apps/code/script_store.cpp @@ -19,6 +19,7 @@ bool ScriptStore::ScriptNameIsFree(const char * baseName) { ScriptStore::ScriptStore() { addScriptFromTemplate(ScriptTemplate::Squares()); + addScriptFromTemplate(ScriptTemplate::Parabola()); addScriptFromTemplate(ScriptTemplate::Mandelbrot()); addScriptFromTemplate(ScriptTemplate::Polynomial()); } diff --git a/apps/code/script_template.cpp b/apps/code/script_template.cpp index dfa40a157..f4f22805f 100644 --- a/apps/code/script_template.cpp +++ b/apps/code/script_template.cpp @@ -48,6 +48,37 @@ plot(y, x) text(-1,-1,"Coucou") show())"); +constexpr ScriptTemplate parabolaScriptTemplate("parabola.py", "\x01" R"(from matplotlib.pyplot import * +from math import * + +g=9.81 + +def x(t,v_0,alpha): + return v_0*cos(alpha)*t +def y(t,v_0,alpha,h_0): + return -0.5*g*t**2+v_0*sin(alpha)*t+h_0 + +def vx(v_0,alpha): + return v_0*cos(alpha) +def vy(t,v_0,alpha): + return -g*t+v_0*sin(alpha) + +def t_max(v_0,alpha,h_0): + return (v_0*sin(alpha)+sqrt((v_0**2)*(sin(alpha)**2)+2*g*h_0))/g + +def simulation(v_0=15,alpha=pi/4,h_0=2): + tMax=t_max(v_0,alpha,h_0) + accuracy=1/10**(floor(log10(tMax))-1) + T_MAX=floor(tMax*accuracy)+1 + X=[x(t/accuracy,v_0,alpha) for t in range(T_MAX)] + Y=[y(t/accuracy,v_0,alpha,h_0) for t in range(T_MAX)] + VX=[vx(v_0,alpha) for t in range(T_MAX)] + VY=[vy(t/accuracy,v_0,alpha) for t in range(T_MAX)] + for i in range(T_MAX): + arrow(X[i],Y[i],VX[i]/accuracy,VY[i]/accuracy) + grid() + show())"); + const ScriptTemplate * ScriptTemplate::Empty() { return &emptyScriptTemplate; } @@ -64,4 +95,8 @@ const ScriptTemplate * ScriptTemplate::Polynomial() { return &polynomialScriptTemplate; } +const ScriptTemplate * ScriptTemplate::Parabola() { + return ¶bolaScriptTemplate; +} + } diff --git a/apps/code/script_template.h b/apps/code/script_template.h index 2eb2e3472..d0d048ab1 100644 --- a/apps/code/script_template.h +++ b/apps/code/script_template.h @@ -10,6 +10,7 @@ public: static const ScriptTemplate * Squares(); static const ScriptTemplate * Mandelbrot(); static const ScriptTemplate * Polynomial(); + static const ScriptTemplate * Parabola(); const char * name() const { return m_name; } const char * content() const { return m_value+1; } const char * value() const { return m_value; }