mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 08:47:28 +01:00
After lauching the console, if we fetch a script we mark it as fetched. When the variable box displays variables from imported scripts, it scans all the variables from the scripts marked as fetched.
119 lines
3.3 KiB
C++
119 lines
3.3 KiB
C++
#include "script_template.h"
|
|
|
|
namespace Code {
|
|
|
|
constexpr ScriptTemplate emptyScriptTemplate(".py", "\x01\x00" R"(from math import *
|
|
)");
|
|
|
|
constexpr ScriptTemplate squaresScriptTemplate("squares.py", "\x01\x00" R"(
|
|
#from math import sin as stew, cos as cabbage
|
|
from math import *
|
|
)");
|
|
|
|
/*constexpr ScriptTemplate squaresScriptTemplate("squares.py", "\x01\x00" R"(
|
|
import math
|
|
import math as m
|
|
import math, cmath
|
|
import math as m, cmath as cm
|
|
from math import *
|
|
from math import sin
|
|
from math import sin as stew
|
|
from math import sin, cos
|
|
from math import sin as stew, cos as cabbage)");*/
|
|
/*
|
|
import math // math
|
|
import math as m // math
|
|
import math, cmath // math math
|
|
import math as m, cmath as cm
|
|
from math import *
|
|
from math import sin
|
|
from math import sin as stew
|
|
from math import sin, cos
|
|
from math import sin as stew, cos as cabbage
|
|
*/
|
|
constexpr ScriptTemplate mandelbrotScriptTemplate("mandelbrot.py", "\x01\x00" R"(# This script draws a Mandelbrot fractal set
|
|
# N_iteration: degree of precision
|
|
import kandinsky
|
|
def mandelbrot(N_iteration):
|
|
for x in range(320):
|
|
for y in range(222):
|
|
# Compute the mandelbrot sequence for the point c = (c_r, c_i) with start value z = (z_r, z_i)
|
|
z = complex(0,0)
|
|
# Rescale to fit the drawing screen 320x222
|
|
c = complex(3.5*x/319-2.5, -2.5*y/221+1.25)
|
|
i = 0
|
|
while (i < N_iteration) and abs(z) < 2:
|
|
i = i + 1
|
|
z = z*z+c
|
|
# Choose the color of the dot from the Mandelbrot sequence
|
|
rgb = int(255*i/N_iteration)
|
|
col = kandinsky.color(int(rgb),int(rgb*0.75),int(rgb*0.25))
|
|
# Draw a pixel colored in 'col' at position (x,y)
|
|
kandinsky.set_pixel(x,y,col))");
|
|
|
|
constexpr ScriptTemplate polynomialScriptTemplate("polynomial.py", "\x01\x00" R"(from math import *
|
|
# roots(a,b,c) computes the solutions of the equation a*x**2+b*x+c=0
|
|
def roots(a,b,c):
|
|
delta = b*b-4*a*c
|
|
if delta == 0:
|
|
return -b/(2*a)
|
|
elif delta > 0:
|
|
x_1 = (-b-sqrt(delta))/(2*a)
|
|
x_2 = (-b+sqrt(delta))/(2*a)
|
|
return x_1, x_2
|
|
else:
|
|
return None)");
|
|
|
|
constexpr ScriptTemplate parabolaScriptTemplate("parabola.py", "\x01\x00" 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;
|
|
}
|
|
|
|
const ScriptTemplate * ScriptTemplate::Squares() {
|
|
return &squaresScriptTemplate;
|
|
}
|
|
|
|
const ScriptTemplate * ScriptTemplate::Mandelbrot() {
|
|
return &mandelbrotScriptTemplate;
|
|
}
|
|
|
|
const ScriptTemplate * ScriptTemplate::Polynomial() {
|
|
return &polynomialScriptTemplate;
|
|
}
|
|
|
|
const ScriptTemplate * ScriptTemplate::Parabola() {
|
|
return ¶bolaScriptTemplate;
|
|
}
|
|
|
|
}
|