mardi 10 mars 2020

un projet plus complet : l'écurie


Démarrer un projet

Démarrer un projet commence par une idée, un besoin utile ou inutile, un dessin. En surfant sur Internet, nous sommes tombés sur une photo d’une écurie. Idéal pour en faire une sur mesure et plus adaptée aux besoins de rangement de la horde miniature de mes 2 filles.


Donc voilà la photo trouvée sur Internet. Dans un premier temps, il a fallu trouver les côtes. C’est assez simple, quoique !


Armé d’une règle et du pied à coulisse nous avons défini les mesures pour que la plupart des chevaux puissent rentrer. A ce propos, regardez-en bas à droite : Bonne Etoile, un anglo-arabe alezan de mémoire, est un peu grand et ne rentrera pas. Pauvre bête ;-)

Ensuite, on trace les axes et l’origine. On les choisit comme on veut mais il faut le faire et s’y tenir. Et puis ensuite on peut commencer.

Premier pas : la structure

Voici un début de structure avec un plancher en gris, et diverses poutres.




A chaque fois, nous avons 2 montants de mêmes couleurs. Bien sûr, il était facile de dupliquer les blocks mais, cette structure a été l’occasion de faire un petit jeu (trop horrible vous dirait mes filles) : la boucle se fait uniquement avec une variable qui prend les valeurs 0 et 1. Le petit jeu est donc de trouver les formules qui correspondent aux mesures que l’on souhaite et qui sont sur le schéma.

Les briques

Pour faire un mur, nous avons besoin de briques. Nous allons dessiner des briques biseautées, c’est à dire avec des chanfreins (n’est-ce pas un joli mot, bien que pas facile à utiliser sur les réseaux sociaux).



Voici la tête de notre brique en final. Pour arriver à ce résultat nous avons commencé par une brique parallélépipède rectangle, mot savant qui désigne un cube allongé.






Donc en mauve, notre brique de base. En bleu, la même brique légèrement tournée et en jaune, encore la même chose mais tournée dans l’autre sens.


Il nous suffit de faire INTERSECTION pour supprimer les arrêtes mauves qui dépassent. Je vous laisse faire néanmoins quelques essais, par exemple, ne faites pas INTERSECTION en premier mais UNION des 2 briques en rotation auparavant : le résultat n’est pas le même !






Nous avons nos chanfreins sur les arrêtes horizontales, réalisons ceux pour les 4 arrêtes verticales.
Le principe est simple, faire 4 blocs que nous allons retrancher (DIFFERENCE) de la brique mauve. Regarder dessous les 4 blocs en vert.



Bien sûr, il est assez simple de faire les 4 blocks, avec un ROTATE et un TRANSLATE pour chacun et de les positionner comme on veut. Pour nous amuser un peu, nous allons essayer de deviner une formule qui nous donne automatiquement ces 4 blocs : « Mais c’est trop horrible ». Surement, mais cela fait un peu travailler les neurones.


Commençons donc par placer un bloc, le tourner un peu (45 degrés) et le décaler pour qu’il masque une arrête.



Les valeurs de Z (45 degrés), de Y (5.5) et de X (2) sont trouvées par tâtonnement.

Nous allons continuer par une boucle (LOOP) avec la variable (i) qui va prendre les valeurs suivantes : -1, +1. L’idée est de se dire que les valeurs 2, 5.5 et 45° sont le résultat de formule qui utilise la variable i.


Essayons déjà en multipliant 45° par i.




Cela marche pour l’angle mais il faut aussi changer X. Multiplions i par 2 pour le TRANSLATE.



Et voilà, nous avons trouvé la première partie de notre formule. Passons à la deuxième partie.

Pour cela, nous allons faire une deuxième boucle avec la variable (j). Dans la formule précédente, nous voyons que Y ne bouge : essayons donc de modifier Y en fonction de la variable (j). Quand (j) prend la valeur +1, cela ne change pas la formule d’avant et quand (j) prend la valeur -1, et bien regardons !



Pas loin, n’est-ce pas ?

Il faut donc surement compléter la formule en déplaçant un peu X. Mettons la variable (j) dans le X du TRANSLATE et voyons le résultat.

X = (i)*(j)*2



et voilà, c’est parfait. Bien sûr, nous aurions pu réfléchir dans nos têtes pour imaginer la formule avant de la coder mais pourquoi se compliquer la vie ?
En plus, je trouve l’exercice intéressant car il permet de découvrir la formule par étape.




Maintenant il suffit de faire une petite DIFFRENCE, et nous voilà prêts, tel le petit cochon de la fable, à construire notre mur.






Le mur de briques

Le mur se fait par empilage de briques :

q une première boucle avec la variable (k) qui translate de 6 (la taille d’une brique) chaque nouvelle brique dans l’axe des Y

q une deuxième boucle avec la variable (m) qui qui translate les briques de 3 (la hauteur d’une brique) sur l’axe Z





Un peu décevant, n’est pas ? nous voulons un mur et non pas une tablette de chocolat. Pour avoir un joli, mur il faudrait décaler les briques les rangées horizontales d’une demi-longueur de brique (c’est à dire de 3).
Donc, pour chaque ligne pour laquelle la variable (m) est paire, on va rajouter le chiffre 3 à Y.  C’est à

Là qu’intervient la fonction mathématique REMAINDER OF. Cette fonction donne le reste d’une division entière (petit rappel, division entière signifie qu’il n’y a pas de virgule et qu’il peut y avoir un reste).




Pour savoir si la variable (m) est paire, il suffit de la diviser par 2 et de voir si le reste est zéro. Si m est impair, le reste sera de 1.



Donc à notre formule initiale K+6 on rajoute REMAINDER OF m÷2 (qui fait 0 ou 1 suivant que le ligne est paire ou impaire) que l’on multiplie par 3 :

q si m est paire, la formule devient K+6+0

q si m est impaire, la formule devient K+6+3


Ce que nous cherchions.

REMAINDER OF

Juste pour terminer avec REMAINDER OF, voici un autre exemple, pour voir à quoi cela peut servir. Au lieu de diviser par 2 la variable (m), nous la divisions par 3.  REMAINDER OF va prendre successivement les valeurs : 0, 1, 2, 0, 1, 2, 0, ….
Si en plus on décale de 2 au lieu de décaler chaque nouvelle brique de 3, cela donne un mur un peu différent du précédent.





Le module MUR et ROUND

Le programme précédent suffit amplement pour soi-même. Cependant, quand on veut que d’autres personnes puisse l’utiliser facilement il va falloir un peu le modifier.
En effet, pour le rendre plus simple à utiliser nous allons construire un module ou il suffira de donner la longueur du mur et sa hauteur pour avoir un beau mur aux dimensions requises.

Abandonnons pour l’instant le block précédent, et commençons à la manière accoutumée des maçons à définir le cadre du mur.




4 éléments de 4 couleurs pour bien les voir, regroupés au sein d’un module qui possède 2 variables (longueur) et (hauteur). Les TRANSLATE présents dans le module sont là pour que l’espace intérieur soit exactement.
Pour indiquer à un module qu’il doit avoir des variables, il suffit de :

q Cliquer le petit engrenage en haut à gauche du module

q Ecrire le nom de la variable : « hauteur » par exemple

q Glisser ce nom de la partie gauche de la fenêtre dans la partie droite à l’intérieur de la « machoire » INPUT.

q Recommencer autant de fois que nécessaire pour les variables suivantes.

q Cliquer à nouveau sur l’engrenage pour faire disparaître cette fenêtre de saisie.


Revenons à notre mur dans son cadre, et insérons pour le module MUR nos deux variables (longueur) et (hauteur).



Il reste maintenant à faire correspondre les variables (m) et (k) avec (longueur) et (hauteur) avec la bonne formule.
On sait que la brique vaut 6 de long, on sait que (k) est la variable du nombre de briques sur la longueur. Il faut donc faire la boucle (LOOP) « longueur ÷ 6 ». Cependant comme K doit être un entier, nous rajoutons la fonction ROUND UP qui donne l’entier immédiatement supérieur.

Pour la hauteur c’est le même principe, mais avec la variable (m) et la hauteur de brique 3. La formule est donc « hauteur ÷ 3 » avec la fonction ROUD UP.




Et voilà nos briques qui remplissent tout l’espace de notre cadre. Bien sûr, si vous changez la taille des briques, il faudra changer les formules, mais je vous laisse le soin de trouver comment.
Pour finir, supprimons le cadre et au passage les briques qui dépassent du cadre. Ainsi va s’achever le module MUR.



Dans ce module, nous avons fait le choix de rester simple dans les paramètres, c’est à dire ce que l’on peut choisir : la longueur et la hauteur. Nous aurions pu aussi mettre sous forme de paramètres : la taille des briques et le décalage d’une rangée sur l’autre. C’es surement un exercice intéressant mais n’oubliez pas que plus on met de possibilités, plus cela devient peu compréhensible pour le suivant.

Le portail et les montants


Voici la belle porte de box que mes filles vous ont préparée.



Ce module est constitué de plusieurs sous-modules. Le premier est la courbe ondulée du portail. Ce n’est pas pour rien que nous avons codé les courbes de Monsieur Bézier.





Le module d’appel à gauche et le module Bézier avec le paramètre DISPLAY à 1. Ce paramètre sera bien entendu mis à zéro pour que les chiffres qui indiquent la place des points de Bézier n’apparaissent plus.

Avouons le, il faut un certain temps pour bien placer les points. Ensuite, les formules font le reste.
La suite du programme, ne fait que rajouter la structure de la porte. En regardant les couleurs sur le dessin et les couleurs dans le code informatique, il est facile de comprendre cette partie. Un petit truc sur la courbe de Bézier : la droite entre le point 0, celui du départ, et le point 1 est la tangente au point 0. Cela permet de placer le point 1. C’est aussi vrai le point 5 : la tangente à ce point est la droite entre point 5 et point 4.

Rajoutons les gonds pour faire tourner la porte.






Au tour des planches de faire leur apparition. Pas de souci, une simple révision des LOOP.






Maintenant, nous allons passer aux barreaux.




Les barreaux sont un peu plus délicats à disposer. On pourrait les faire les une après les autres mais ce serait peu élégant. Pour chaque élément du portail, nous réalisons une boucle et la hauteur de chaque barreau est une formule. L’idéal serait que cette formule soit de type Bézier mais le module Bézier n’est pas conçu pour cela. Pour l’instant ! Peut-être un lecteur de ce livre fera un module avec la bonne formule ?

Nous avons préféré être rapide, et utiliser une formule simple de type N∧2 (N puissance 2) avec quelques coefficients choisis par essais et re-essais. Pour expliquer, le coefficient est un nombre qui est soit multiplié soit additionné dans la formule.

Le Loquet

Pour finir, notre portail, il faut un petit loquet. Nous avons fait un concours : chacun devait imaginer un loquet. En combinant les idées d'une de mes filles et les miennes, nous avions un vrai loquet. Mais comme celui de mon autre fille était le plus efficace, elle a gagné.  Voici son dessin.



Et une fois le block réalisé, le portail est fini.


Le toit de tuile

Le toit de tuile ne fait que répéter ce que nous savons déjà :

q Un module TUILE qui réalise une tuile

·      Avec un cylindre à peine conique
·      Une différence pour le rendre creux
·      Une différence pour le couper en deux

q Un module TOITURE avec 2 boucles :

·      Une pour mettre les tuiles en rangées
·      L’autre pour additionner les rangées


Le box enfin terminé


Voici, le grand jour est arrivé.




Nous pourrions encore le compléter avec des accessoires, des fenêtres à l’arrière et plein d’autres choses. Et pour être plus près de la photo prise sur Internet, il suffit de faire une boucle qui dessine et translate l’écurie. Prévoir d’aller gouter une fois RENDER lancé !

dimanche 8 mars 2020

Quelques liens utiles mais surtout amusants autour de BlockScad

BLOCKLY

Blockly est l’interface réalisée par GOOGLE qui est utilisée dans BlocksCAD. Blocky peut aussi être utilisé pour programmer des Arduino (petit controleur pour robot) ou des Thymio (petits robots sympathiques) et plein d'autres trucs.

SNAP! Build You Own Blocks

SNAP est un logiciel de programmation généraliste qui utilise le même style d’interface de blocks. C'est SCRATCH mais sous forme récursive, parfait pour les dessins fractals   http://snap.berkeley.edu/index.html

SCRATCH

Initiateur de cette démarche très graphique de programmation, SCRATCH est principalement destiné aux enfants. Il est néanmoins très puissant. https://scratch.mit.edu/

OPENSCAD

OEPNSCAD est un modeleur qui a servi de référence à BlocksCAD. http://www.openscad.org/

Mathématique magique

Le site personnel d’une agrégée de Mathématique, site plein de ressources, d’histoires et de merveilles. http://therese.eveilleau.pagesperso-orange.fr/

Maths et Tiques

http://www.maths-et-tiques.fr/ un site avec de nombreuses ressources sur les mathématiques et la géométrie.

Anselme Lanturlu

https://www.jp-petit.org/TELECHARGEABLES/livres_telechargeables.htm De nombreux aspects de la science abordés de façon originale voire révolutionnaire dans des bandes dessinées qui ont fait rêver mon adolescence (elle n'est pas finie !).
Un grand merci à son auteur.

HIPARQUE

Pour aller (beaucoup) plus loin dans la notion de représentation en trois dimensions un excellent document http://www.dimensions-math.org/Dim_regarder.htm

https://www.chaos-math.org/fr.html est aussi à voir pour comprendre le chaos, au moins pour essayer.

MATHCURVE

De nombreuses ressources et formules

Pour ceux qui aiment l’air

Le brevet d’initiation à l’aéronautique est un examen pour les jeunes qui veulent faire du vol libre et plus tard du vol moteur.
Le cours est passionnant et fait découvrir la technologie, la météorologie, la navigation et plein d'autres choses.

Pour ceux qui aiment l’eau

Il n’existe pas d’équivalent au BIA pour les marins. C’est un peu dommage, mais comme un avion et un bateau marchent sensiblement de la même façon à « ROTATE 90° » près, vous pouvez toujours regarder le site de ceux qui aiment l’air.

App Inventor 2

https://appinventor.mit.edu  pour de futurs posts. Langage en Blockly  pour créer des applications sous Android.

dimanche 1 mars 2020

BlockScad : Faisons notre cinéma avec OpenScad

Laissons entrevoir les possibilités de l’animation, c’est à dire de faire bouger les objets dans le temps et pas uniquement dans l’espace.

Une courbe rebondissante

Premièrement, réalisons une courbe qui ressemble à celle de l’exponentielle amortie que nous avions appelée « courbe d’amortissement ». Nous avons apporté néanmoins 2 modifications :

q Nous avons changé la variable utilisée « i » en « $t », nous verrons plus tard pourquoi.

q Nous avons changé le sinus en cosinus et rajouté la fonction la fonction ABSOLUTE devant. Cette fonction rend le résultat du cosinus toujours positif

q Enfin, nous faisons varier la variable « $t » entre 0 et 1, ce qui a obligé à changer les paramètres pour faire une jolie courbe que vous pouvez voir ci-dessous.





Préparation de la courbe pour passer en Openscad

Maintenant, nous allons supprimer la boucle sans pou

BlockScad et Jeux de construction

Le pied à coulisse

Avant de nous lancer dans les autres jeux de construction, j’aimerai vous parler du pied à coulisse. C’est un petit outil très utile dans le bricolage pour bien mesurer les pièces pas trop grandes.
De plus, pour un pied à coulisse à vernier, le système qui permet d’être précis est vraiment malin : une deuxième graduation légèrement décalée par rapport à la première. Vous trouverez facilement sur le Net comment vous en servir. https://www.youtube.com/watch?v=J0bYD3_n1Z4

J’en ai un depuis plus de 30 ans qui fonctionne parfaitement.


Et si vous rajouter un porte-mine, une gomme, un compas, une règle (j’utilise une règle de navigation), et un carnet de notes, le monde de votre imaginaire est à vos pieds.

Mes filles conseillent aussi de rajouter aussi de la colle et des ciseaux pour que votre imaginaire se réalise en plus de s'imaginer.


Lego®, Meccano® et tous les autres


Il existe de nombreuses boites de construction qui permettent presque tout. C’est ce presque qui justifie ce paragraphe. Il arrive que pour certains montages il faille des pièces spéciales. Alors pas de soucis, vous pouvez les faire sur mesure avec une imprimante 3D.

Le pied à coulisse est très important pour réaliser des pièces compatibles avec votre jeu de construction préféré car les mesures sont en dixièmes de millimètre et il est important d’être précis.


Nous n’allons pas rentrer dans le détail d’une telle construction, au demeurant fort peu utile, mais les grosses pièces jaunes sont toutes sur-mesure tout en restant compatible avec les dimensions LEGO®. Cela permet de ne réaliser que le strict nécessaire en impression 3D pour une maquette.

Une barre aux dimensions Lego Technic®


Armé du pied à coulisse, et d’une vraie pièce originale, nous avons pris les différentes mesures :

q Mesures externes de la barre,

q Mesures interne des trous.



Les mesures du trou permettent de réaliser le module TROUTECHNIC qui est encadré de deux cylindres, en jaune, car ce module sera utilisé dans une DIFFERENCE.

Le module Barre-GOEL qui réalise une coque (HULL) de deux cylindres en extrémités et puis une différence avec autant de module TROUTECHNIC que nécessaire.

Initialement, nous avions repris des mesures publiés dans des forums sur Internet. Nous conseillons vivement de reprendre chacun ses propres mesures, de préférence avec un pied à coulisse au 50ème.





BlockScad : les surfaces en 3D


Nous avons déjà vu que nous pouvons faire des surfaces en 3 dimensions avec LINEAR EXTRUDE et ROTATE EXTRUDE.
Pour clore ce chapitre, réaliser une surface directement à partir d’une formule.

Pour cela, encore faut-il connaître la formule. Nous allons en prendre une donnée par http://www.mathcurve.com/surfaces/paraboloidhyperbolic/paraboloidhyperbolic.shtml qui s’appelle communément la « selle de cheval ». Un cadeau pour les passionnées de chevaux !



L’équation cartésienne s’écrit :
X = 40*u
Y = 30*v
Z= 30*( u2 - v2)

Nous avons pris pour a, b, h les valeurs 40, 30,30 mais ces paramètres peuvent se changer en fonction de la taille de l’objet. Remarquez que pour une surface nous n’avons pas UNE variable (la variable « t ») mais DEUX variables (« u » et « v »).

Le block de selle de cheval




Comme nous l’avons fait déjà souvent, une petite sphère de base ; ensuite un TRANSLATE avec la formule en X, Y, et Z ; une LOOP sur « u » ; une deuxième LOOP sur « v ». Cette deuxième boucle (LOOP) est la nouveauté pour faire une surface par rapport aux courbes.

Vous avez remarqué ? La première LOOP contient l’option HULL mais pas la deuxième. Vous n’aurez qu’à essayer en cochant HULL pour les deux LOOP, le résultat est bizarre.



La fonction U2-V2 ou U2-V2

Pour avoir un objet en 3D et pas uniquement des tubes cotes à cotes, il faut diminuer le pas (BY) de la deuxième fonction LOOP, celle qui n’a pas l’option HULL cochée.
Au passage, nous avons un peu changé le block pour utiliser le module avec l’option RETURN. Cela permet de ne pas taper plusieurs fois une formule compliquée.


Le souci principal de diminuer le pas, c’est que le programme est très long et que le lissage peut encore s’améliorer.
Pour améliorer, nous allons inverser les LOOP en commençant par celle de « u » puis celle de « v ». Cette dernière sera cochée HULL désormais.


Je ne résiste pas plus longtemps pour vous donner le nom officiel de cette surface : le paraboloïde hyperbolique. Trop stylés ces mathématiciens !


Et bien jouons à Star Wars dit la cigale !

 Maintenant, nous pouvons jouer en changeant la formule de Z et même celles de X et Y et voir ce que cela donne.

Par exemple, nous avons simplement changer la formule (u∧2-v∧2) en (u∧2+v∧2) : un plus à la place du moins.


Et voici le résultat. Encore quelques modifications et nous aurons une coquille de Caliméro ou un casque de Darth Vador ?

Je vous laisse modifier et essayer des formules inventées ou vues sur des sites de mathématiques.