[Scènes] Supporter quelques fonctions supplémentaires de Math.js

La v4.58 a ajouté la gestion ‹ en natif › de la fonction random de Math.js pour pouvoir l’appeler directement dans les actions permettant de calculer une valeur (et c’est pratique en particulier dans l’action « Attendre »).

Et c’est plus intuitif bien sûr que de devoir utiliser l’alternative avec l’action « Requête HTTP » tel que décrit ici.

J’aurais besoin d’utiliser la fonction math.js ‹ exp ›, pour définir une durée d’arrosage qui s’intensifie de la façon suivante quand ma cuve est bien remplie :

Je n’ai pas trouvé dans la doc une liste déjà établie des fonctions mathjs supportées nativement (existe-t-elle, et je l’ai raté ?). D’après mes tests, ces fonctions sont déjà supportées :

  • abs
  • random
  • ceil, floor, round
  • compare, larger, largerEq (et donc je suppose aussi smaller, smallerEq,… mais je n’ai pas testé)

Parmi tout ce que propose Math.js, je trouverais intéressant de rajouter les fonctions suivantes :

  • min, max, mean
  • log, exp, square, sqrt (et peut-être cube et cbrt)

@pierre-gilles est-ce que tu voudrais une demande de fonctionnalité par fonction mathjs ?

Non pour le coup celle-ci est suffisante :slight_smile:

Merci pour la demande !

1 « J'aime »

@pierre-gilles , où peut-on trouver la liste des fonctions natives utilisables dans les scènes ? merci

Salut @Nagromdark,

Tu as raison, il manque une documentation à ce sujet. Je me suis noté de regarder ça.

En attendant, voilà les fonctions disponibles :

  • add - Addition
  • divide - Division
  • larger - Comparaison « plus grand que » (>)
  • smaller - Comparaison « plus petit que » (<)
  • largerEq - Comparaison « plus grand ou égal à » (>=)
  • smallerEq - Comparaison « plus petit ou égal à » (<=)
  • mod - Opération modulo
  • round - Arrondi de nombres
  • random - Génération de nombres aléatoires

Pour utiliser ces fonctions, je te conseille la documentation de Mathjs: https://mathjs.org/

Je te tiens au courant dès que j’ai rédigé une documentation plus claire avec des exemples :slight_smile:

1 « J'aime »

@pierre-gilles, d’après quelques tests que j’ai fait, les fonctions ‹ compare ›, ‹ abs ›, ‹ ceil › et ‹ floor › fonctionnent aussi.

1 « J'aime »

@Nagromdark @StephaneB J’ai rajouté une nouvelle documentation :

J’ai mis à jour la documentation de Attendre et Condition sur variables pour mentionner cette page sur les fonctions mathématiques disponibles !

J’ai réussi à tout utiliser, sauf compare qui ne fonctionne pas chez moi, je ne l’ai pas inclu dans la documentation du coup. Tu avais fais comment ?

1 « J'aime »

Ben facile, j’avais dû prendre une substance illicite… :stuck_out_tongue_closed_eyes: Parce que je n’arrive pas non plus à reproduire ce que j’avais cru voir fonctionner… Désolé pour la fausse piste :smiling_face:

1 « J'aime »

Et merci pour cette page, ce sera très utile. Peut-être que la page pourrait décrire aussi la méthode via une requête HTTP, pour ceux qui voudraient utiliser des méthodes mathjs un peu exotiques ?

1 « J'aime »

Tu parles de quelles méthodes plus exotiques ? Je pense ça prendra plus de temps d’écrire cette documentation que de rajouter les méthodes dans Gladys :stuck_out_tongue:

Ben il y a celles que j’avais listées plus haut. Mais sauf si tu as en tête de les ajouter prochainement :

  • min, max, mean
  • log, exp, square, sqrt (et peut-être cube et cbrt)

Et sinon, il se pourrait qu’un amateur de domotique ET mathématicien :wink: ait envie de se servir des fonctions mathématiques fix(), mod(), gcd(), lcd(), des fonctions logiques and(), not() or(), xor(), de la fonction randomInt(), des fonctions de comparaison compare(), equal(), unequal(), des fonctions de comparaison textes compareText(), equalText(), de la fonction statistique median(), de certaines fonctions trigonométriques, …
Et encore, je sélectionne celle dont je comprends ce qu’elles font, mais il y en a plein d’autres peut-être utile aussi, je sais pas… C’est pour ça que ça me semblerait utile d’expliquer que l’appel à mathjs.org est aussi possible.

alors celle-là elle est pour moi :stuck_out_tongue_winking_eye:

1 « J'aime »

Je me suis douté que tu allais réagir :yum:

1 « J'aime »