By Jérôme Lécuyer @Jiogo18 For @Jig0ll & @Robotek
Disponible sur jiogo18.github.io/JigMath
Convertit une chaîne de caractère en système d'équations.
Si vous n'avez pas de variables, utilisez directement systeme.getValue().
Si vous avez des variables, changez la valeur avec systeme.setVariable(name, value).
Ajoutez autant d'espaces que vous souhaitez, le résultat sera le même.
Pour accélérer le traitement, priorisez les valeurs constantes : 3*x/2 => x*(3/2).
Si une variable n'est pas définie, la valeur retournée est une chaîne de caractère la plus simplifiée.
Ajoutez des fonctions personnalisées par le deuxième paramètre : JigMath('f(x)', [{name: 'f', func: (x) => x+2}]).
La couleur décimale est un nombre entre 0 et 16777215 (#FFFFFF). Les couleurs r, g, b sont des nombres entre 0 et 255. Les angles sont en radians.
- Hexadécimal :
#nombre,0xnombre - Binaire :
0bnombre
TOUTES les fonctions de Math (objet JavaScript) sont disponibles (sans préciser Math).
| Nom | Description |
|---|---|
| max(a, b) | Maximum entre a et b |
| min(a, b) | Minimum entre a et b |
| minmax(min, x, max) | Un nombre dans l'intervalle [min;max], x ou limite |
| range(min, x, max) | Vrai si x est dans l'intervalle [min;max] |
| abs(x) | Valeur absolue |
| sqrt(x) | Racine carrée |
| pow(x, n) | Puissance |
| exp(x) | Exponentielle |
| round(a) | Arrondi à l'entier le plus proche |
| floor(a) | Arrondi à l'entier inférieur |
| ceil(a) | Arrondi à l'entier supérieur |
| random() | Nombre aléatoire entre 0 et 1 |
| pi() | Valeur de PI à 6 décimales |
| cos(a) | Cosinus |
| sin(a) | Sinus |
| tan(a) | Tangente |
| acos(a) | Arc Cosinus |
| asin(a) | Arc Sinus |
| atan(a) | Arc Tangente |
| modulo(a,b) | Modulo |
| angle_complexe(x, y) | Angle de rotation d'un nombre complexe / d'un point |
| Nom | Description |
|---|---|
| triangle(x, x0, y0, pente) | Fonction triangle avec un sommet en (x0,y0) et un facteur de pente |
| distance(a, b) | sqrt(a²+b²) |
| heaviside(t) | Fonction Heaviside : 0 sur ]-inf;0[ et 1 sur ]0;+inf[ |
| porte(t, t1, t2) | Fonction porte : identique à range(min,x,max) |
| pente_cosale(t) | Fonction f(t)=t avec f(t<=0)=0 |
| Nom | Description |
|---|---|
| rgb(r, g, b) | Associe les couleurs pour former une couleur décimale |
| red(c) | Quantité de rouge (entre 0 et 255) dans la couleur décimale |
| green(c) | Quantité de vert (entre 0 et 255) dans la couleur décimale |
| blue(c) | Quantité de bleu (entre 0 et 255) dans la couleur décimale |
| huerotate(c, angle) | Rotation de la couleur décimale avec un angle de rotation (en radian) |
| lumiere(c, lumiere) | Change le taux de luminosité de la couleur (1 = ne change pas) |
| Nom | Description |
|---|---|
| set(nom, valeur) | Définit une variable avec une valeur (retourne 0) |
1+2*3+(4+2)⇒131+#2A*3+sqrt(4)+(4+2)⇒1351+#2A*3 +sqrt(4 )+ (4 *t +2)⇒129((4*t)+2)
Exemples LED-CUBE
(Si tMax n'est pas précisé, utilisez le nombre d'images importées)
#00FFFF, tMax = 1
rgb(t*255/10,t*255/10,t*255/10), tMax = 10
lumiere(#FFFFFF, t/10), tMax = 10
- Sur l'axe x (en profondeur) :
img(y,z,t) - Sur le plan x=0 (devant) :
(x==0) && img(y,z,t) - Sur le plan z=7 (au sol) :
(z==7) && img(y,7-x,t) - Sur les 2 premiers plans x=0 et x=1 (devant) :
(x<2) && img(y,z,t)
img(y,z+min(8-abs((t-20)-(x-4)),0),0), tMax=40
img(y,z+min(triangle(t-x,16,8,1),0),0), tMax=40
img(y,z,modulo(t+floor(random()*x*10),12))
(range(3, x, 4) && img(y,z,t)) || (range(3, y, 4) && img(x,z,t))
(range(3, x, 4) && img(y,z,t)) || (range(3, y, 4) && img(x,z,modulo(t+6,12)))
((7-x)==minmax(0,round(triangle(t,50,20,0.5)),7)) && img(y,z,minmax(0,triangle(t,50,40,1),20)), tMax=100
(x<2) && huerotate(img(y,z,0), t * 2 * pi() / 60), tMax=60
(x<2) && img(round(3.5+(y-3.5)*cos(t*6.283/30) + (z-3.5)*sin(t*6.283/30)), round(3.5+(z-3.5)*cos(t*6.283/30) - (y-3.5)*sin(t*6.283/30)), 0), tMax=30
(x<2) && lumiere(#00FFFF, 1-exp(modulo(t*2*pi()/20-angle_complexe(y-3.5, z-3.5), 2*pi()) - pi()/2)), tMax=20
(x<2) && huerotate(#FF0000, angle_complexe(y-3.5, z-3.5)-t*2*pi()/20), tMax=20
(x<2) && (distance(y-3.5,z-3.5) <= 4) && huerotate(#FF0000, angle_complexe(y-3.5, z-3.5)-t*2*pi()/20), tMax=20
(x<2) && range(-2*pi(), modulo(angle_complexe(y-3.5, z-3.5)+pi(),2*pi()) - ( pente_cosale(t) - pente_cosale(t-20) + pente_cosale(t-40) - pente_cosale(t-60) )*2*pi()/20 , 0) && img(y,z,0), tMax=80
rgb(((x<2)||(6<=x))&&red(img(y,z,t)), (range(2, x, 3)||(6<=x))&&green(img(y,z,t)), (range(4, x, 5)||(6<=x))&&blue(img(y,z,t)))
set(tAngle,t*2pi/tMax)+
lumiere(huerotate(#FF0000,tAngle+pi), 1-0.8*abs(zM-3.5*sin((
t/tMax
-sqrt(xM*xM+yM*yM)/16
) *2pi)))
tMax=80