mercredi 26 février 2020

BlockScad : les courbes de Cyril Grandpierre

Cyril Grandpierre est un architecte naval qui, entre autres, a publié dans Loisirs Nautiques en 1980 une méthode de tracé des carènes assez originale pour l’époque en utilisant une simple calculatrice.
Il existe maintenant des logiciels complets de tracé de carène, mais l’innovation de C. Grandpierre a été de proposer une famille de courbes sous la forme suivante :
Y= a*X(c+d*X+e*X2)+b

Et voilà un premier résultat. Pour vous, je ne sais pas, mais moi je trouve que cela ressemble bien à un demi maître-couple de bateau.


Il restera à étudier différentes valeurs des paramètres c, d, e.

BlocksCAD versus Openscad


Si vous regardez en haut à droite de l’écran, juste à coté du bouton « blocks », il y a un bouton « code ». Aventurons nous !


 Ce sont les lignes de code informatique « OPENSCAD », qui sont le reflet des blocks de BlocksCAD à la page suivante.


Vous pouvez les comparer et l’on retrouve le module « grandpierre », HULL, CIRCLE, TRANSLATE, les noms de variables. Seule la boucle LOOP change de nom et devient FOR.
Il n’y en a pas un qui est meilleur que l’autre, ils ont chacun leurs avantages. Nous trouvons que BlocksCAD reprend une interface plus facile à lire pour les enfants et bricoleurs du dimanche comme nous.

BlocksCAD permet d’avoir le code Openscad … mais Openscad ne le propose pas. L’intérêt d’Openscad réside pour certains calculs un peu longs. Par exemple, nous n’avons pas réussi certains essais en faisant varier les paramètres. En Openscad, cela prend quelques secondes.

Cherchons donc à voir l’influence des paramètres sur la formule de Grandpierre. Voici notre code BlocksCAD.


Cliquons, sur code, sélectionnons toutes les lignes et « copier ». Sélectionnons Openscad (je vous laisse le soin de trouver comment l’installer sur votre ordinateur, c’est très bien expliqué sur le site Openscad http://www.openscad.org/ )

Une fois le code « collé » dans Openscad, il suffit de faire F5.

Ce qui peut prendre quelques dizaines de secondes avec BlocksCAD (prend moins d’une seconde sous Openscad, en tout cas avec mon ordinateur).
Pour moi, le principal inconvénient d’Openscad, ce sont ces formules qu’il faut se rappeler avec des accolades, crochets et parenthèses et dans le bon ordre s’il vous plaît !

Et pour terminer, les résultats identiques d’un même programme.



Cela peut être utile de passer sous Openscad pour des programmes assez longs. Nous en avons fait un qui demandait plus de 2 heures sous Openscad !




mardi 25 février 2020

BlockScad : les courbes de Bézier

Les courbes de Bézier ont été décrites par Pierre Bézier dans les années 1950 pour dessiner des pièces d’automobiles. Elles sont aussi utilisées pour lisser les lettres des polices de caractères et sont présentes dans la plupart des logiciels de dessin.


Les courbes, car c’est une famille de courbes, se calculent suivant une même formule à partir de points. La courbe de Bézier d’ordre 3 nécessite de définir 4 points (et ainsi de suite). La courbe commence avec le premier point (on va l’appeler P0) et se termine avec le dernier point (P3).

Une fois P0 et P3 définis, on peut changer la forme de la courbe en simplement déplaçant les points P1 et P2.

La courbe ne passe pas par les points intermédiaires : il faut plus les voir comme des aimants qui attirent la courbe (façon de parler).

Le block 2D Beziers3

La courbe de Bézier d’ordre 3 est la formule suivante :
P0*(1-t)3 + 3*P1*t*(1-t)2 + 3*P2*t2*(1-t) + P3*t3  et cela pour la variable (t) qui varie entre 0 et 1.

Cette formule doit se calculer pour toutes les abscisses des Points, c’est à dire P0x, P1x, P2x, P3x et aussi pour les ordonnées de ces points, c’est à dire P0y, P1y, P2y, P3y.


C’est un bloc qui dessine la courbe une fois après avoir choisi les points. Un paramètre « DISPLAY » permet de dessiner le point P1 (un petit cercle) et le point P2 (un carré) pour faciliter le déplacement des points pour avoir la courbe définitive.

Une fois la courbe désirée, il suffit de mettre zéro dans le paramètre display et la courbe est seule.



Le Bloc 2D Beziers4

Nous allons aussi définir la courbe de Bézier d’ordre 4, c’est à dire avec 5 points car elle permet des courbes avec des formes un peu plus élaborées.
La courbe de Bézier d’ordre 4 est la formule suivante :

P0*(1-t)4 + 4*P1*t*(1-t)3 + 6*P2*t2*(1-t)2 + 4*P3*t3*(1-t) + P4*t4 et cela pour la variable (t) qui varie entre 0 et 1.


Le Bloc 2D Beziers5

Nous allons aussi définir la courbe de Bézier d’ordre 5, c’est à dire avec 6 points.
La courbe de Bézier d’ordre 5 est la formule suivante :

P0*(1-t)5 + 5*P1*t*(1-t)4 + 10*P2*t2*(1-t)3 + 10*P3*t3*(1-t)2 + 5*P4*t4*(1-t) + P5*t5  et cela pour la variable (t) qui varie entre 0 et 1.


Un profil d’aile


Assez simplement, en utilisant 2D Bezier5, on peut réaliser un profil d’aile et en faire une aile avec un LINEAR EXTRUDE.


Le triangle de Pascal

Comme nous sommes à peu près sûr qu’Edwin va nous poser la question, autant l’aborder maintenant. Mais pourquoi s’arrêter au block Bézier5 ? et si on veut un block Bézier 6, 7, 8, ….

Le principe est toujours le même : il faut réaliser la formule d’un polynôme de la forme version 8) :
(1-t) ∧8 + t*(1-t)∧7 + t∧2*(1-t)∧6 + t∧3*(1-t)∧5 + t∧4*(1-t)∧4 + t∧5*(1-t)∧3 + t∧6*(1-t)∧2 + t∧5*(1-t) + t∧8 : quand la puissance de (1-t) diminue celle de (t) augmente.


Mais il faut rajouter des coefficients (des nombres constants) devant chaque des multiplications. Les coefficients sont donnés par le triangle de Pascal.



Vous avez compris le principe ? Tant mieux !

Voici donc la formule en y ajoutant les coefficients :

1*(1-t) ∧8 + 8*t*(1-t)∧7 + 28*t∧2*(1-t)∧6 + 56*t∧3*(1-t)∧5 + 70*t∧4*(1-t)∧4 + 56*t∧5*(1-t)∧3 + 28*t∧6*(1-t)∧2 + 7*t∧5*(1-t) + 1*t∧8

BlockScad : Les équations des différentes coniques

Sans jouer avec les intersections, nous allons prendre la formule polaire, oublié dans un cours de mathématique et retrouvé sur Internet.
   RAYON = (paramètre) / (1- (excentricité) x COS (AZIMUT))
Avec cette formule, l’origine est appelée foyer de la conique.
Si l’excentricité est :

q Supérieure à 1, c’est une hyperbole

q Egale à 1, c’est une parabole

q Inférieure à 1, c’est une ellipse. Avec un cas particulier si égale à 0 cela devient un cercle.




Remarque : ne pas commencer la boucle à 1 car pour la parabole, cela commence par une division par zéro ce qui n’est pas idéal !


BlockScad : les coniques, ellipse, hyperbole et parabole


Puisque nous avons abordé l’ellipse, généralisons en rajoutant l’hyperbole et la parabole. Ces trois courbes sont nommées des coniques car elles peuvent être définies par l’intersection d’un plan et d’un cône. Suivant l’inclinaison du plan par rapport à ce cône, on obtient les différents types de courbes. Donc traçons rapidement un cône et un plan pour voir ce que cela donne.





Pour les schémas suivants nous appliquerons l’opération INTERSECTION pour bien montrer la courbe.

Le cercle est une conique

Si le plan est horizontal (ROTATE 0°), cela donne un cercle.


L’ellipse est une conique

SI le plan est incliné un peu (c’est à dire entre l’horizontal et la pente du cône) cela devient une ellipse.


La parabole est une conique

Si l’inclinaison est exactement la pente du cône, cela devient une parabole.


On voit bien sur le dessin précédent que le plan est dans la même inclinaison que le coté du cône.

Voici donc ci-dessous la parabole réalisée par BlocksCAD.


L’hyperbole est une conique

Et pour terminer, lorsque le plan est plus incliné que la pente du cône.


Nous obtenons notre fameuse hyperbole.


L’hyperbole des mathématiciens

Souvent, pour les hyperboles, les dessins présentés montrent aussi la même courbe en symétrique. Cela est dû à la définition d’un cône pour un mathématicien qui est composé de 2 cônes physiques (le monde dans lequel nous sommes) symétriques et pointe à pointe.



Passons au stade suivant pour voir comment faire les mêmes courbes en équation.




dimanche 23 février 2020

BlockScad : Une formule d'ellipse

Une bonne formule pour dessiner une ellipse en utilisant l’équation paramétrique suivante :
X -> largeur*COS (i)
Y -> hauteur * SIN (i)
On obtient une belle ellipse, vite calculée par BlocksCAD.



Voici donc, un module tout simple que l’on peut facilement paramétrer pour avoir soit une ellipse complète (début à zéro et fin à 360) soit un arc d’ellipse. L’ellipse à l’avantage de dessiner des courbes plus douces que le cercle.

BlockScad : les courbes périodiques, suite

REMAINDER

Utilisons encore cette fonction REMAINDER OF. Maintenant, nous voulons 4 courbes, c’est à dire 4 déphasages. Au lieu de diviser par 2, nous divisons par 4. Une petite astuce. IL faut commencer de compter à partir de 4 sinon le reste de la division pour (1, 2, 3 et 4) sera toujours égal à zéro. Pour cela i l suffit d’additionner 4 à la variable j.


HSV ou TSV

Les courbes précédentes son toutes en violet. Il serait sympa de les différencier avec des couleurs. Pour cela nous allons jouer avec COLOR, une transformation disponible dans le menu de gauche TRANSFORMS. Cette transformation permet de changer la couleur avec le paramétrage HSV qui se dit TSV en français. https://fr.wikipedia.org/wiki/Teinte_Saturation_Valeur

Le T c’est pour « Teinte » c’est à dire la couleur.


Pour simplifier, « HUE » varie entre 0° rouge (et aussi 360°) en passant par 60° : jaune ; 120° : vert ; 180° : cyan ; 240° : bleu ; 300° : magenta.

Concrètement comment faire pour bien différencier les couleurs des sinusoïdes. Comme « i » varie de 1 à 10, et que le maximum est de 360, alors il faut que HUE égale 360 lorsque J= 10. La formule est donc HUE = Jx36.

Un cercle ondulé

Comme nous l’avons déjà dit, il n’est pas utile de savoir comment l’ordinateur calcule la fonction sinus, il suffit de l’utiliser comme si c’était une opération de plus.
Le bloc suivant permet de faire un cercle ondulé qui pourra ensuite facilement se transformer en tube ondulé. Cela se fait en additionnant la fonction sinus (les ondulations) à un cercle classique. Ensuite, il faut régler les différents paramètres pour obtenir ce que l’on souhaite.


Cela ressemble un peu à un engrenage mais seulement un peu. Il devient plus facile de comprendre l’utilité des formules : nous pouvons les additionner et les multiplier et les combiner pour faire des courbes très complexes.
Une fonction EXTRUDE sur le profil précédent


BlockScad : les courbes périodiques

Une onde sinusoïdale

L’onde c’est cette déformation qui se propage sur un liquide ou un solide : un petit caillou dans une flaque, un drap secoué et une onde apparaît.

On parle souvent d’onde sinusoïdale car assez souvent ces ondes ont la forme d’une courbe donnée par la fonction sinus (on peut aussi le voir à l’envers, le sinus est une bonne fonction qui ressemble bien à l’onde). Mais quelle est cette forme ? Nous avons utilisé les sinus et cosinus pour passer des coordonnées polaires aux coordonnées cartésiennes mais que se passe t-il si on utilise la fonction SIN pour tracer une courbe en coordonnées cartésiennes.


Amplitude et période

Maintenant, faisons le raisonnement à l’envers. Nous voulons une période de 10 (la période d’une fonction sinus est la distance entre 2 crêtes) et une amplitude de 2 (l’amplitude est la moitié de la hauteur de la crête).  La formule est :

Amplitude * sin (360 ÷ période).

Et voilà un petit module pour facilement réaliser cela.


Un peu d’osier

Pour aller plus loin sur la fonction sinus, maintenant que nous connaissons la période et l’amplitude, introduisons la phase. La phase est le décalage par rapport à l’origine. Nous pourrions utiliser la fonction TRANSLATE, mais il est souvent plus facile de décaler en utilisant la formule du sinus la phase comme variable.

Regardez ce que cela donne pour fabriquer une plaque en osier. Il manque quelques tiges mais nous vous laissons le soin de les rajouter.



Cet exemple va aussi nous permettre d’introduire la fonction REMAINDER OF. Dans la boucle, nous voulons avoir une phase à 0° puis une phase à 180° puis une phase à 0° et ainsi de suite.


REMAINDER OF est le reste d’une division. Si la division est par 2 (÷2), le reste est 0 pour les nombres pairs et 1 pour les nombres impairs. Il suffit ensuite de multiplier par 180 pour obtenir : 0, 180, 0, 180, …

Restons en phase

Cette expression du langage courant vient de la phase des sinusoïdes. Voici 4 courbes :

q en rouge, la courbe de base,

q en jaune une phase de 90°, c’est à dire une courbe décalée d’un quart de la période. Les physiciens disent que les courbes sont en quadratures.

q en vert, une courbe décalée d’une demi-période, totalement symétrique par rapport à la courbe rouge. On dit que les courbes sont en opposition de phase. Elles ne s’aiment vraiment pas !!

q en bleu, une phase de 270° ce qui revient aussi à -90°.




Mieux gérer les extrémités avec la phase

Et si on regarde le résultat de plus loin, on comprend l’intérêt d’utiliser la phase et non pas une transformation TRANSLATE. Les courbes démarrent et finissent au même endroit.


BlockScad : La Spirale d'Archimède



La Spirale d’Archimède, découverte par Archimède paraît-il, a une formule simple du rayon en fonction de l’azimut.

RAYON = (PAS) x AZIMUT.  Le paramètre PAS est la distance entre les bras de la spirale.


 



Le paramètre TOUR, permet de régler le nombre de tour de spirale désiré.

BlockScad : Une rosace (2D Rosace)

Avec les arcs et les segments, il y a un grand nombre de possibilités pour dessiner des profils. Maintenant passons à d’autres formes qui sont le résultat d’équations (c’est à dire de formules) déjà connues depuis longtemps par les mathématiciens.
La rosace est une courbe qui se décrit facilement par une formule mathématique en coordonnées polaires. La formule magique est :

RAYON = (taille) x SIN (pétale x AZIMUT)
Nous avons déjà vu le RAYON et l’AZIMUT des coordonnées polaires ainsi que le sinus (SIN).


Les paramètres de la Rosace




Les 3 paramètres permettent :

q TAILLE détermine la longueur d'un pétale du centre à son extrémité

q PETALE

·      Si pair (c’est à dire divisible par 2), alors cela produit une fleur de (PETALE divisée par 2) pétales
·      Si impair, alors la fleur comprend autant de pétales que le nombre PETALE
·      Si PETALE est un nombre rationnel (la division de 2 nombres entiers) alors les pétales se chevauchent. Exemple ci-dessous (13/7)

q TOUR, permet de facilement augmenter le nombre de boucle que doit faire le programme lorsque PETALE est rationnel. Si vous le laissez à 1, la courbe ne sera pas finie.

BlockScad : Une courbe en coordonnées polaires, cercle et arc de cercle

Comme pour une courbe en coordonnées cartésiennes, la courbe en coordonnées polaires va utiliser la boucle informatique LOOP.



Le bloc comprend :
  1. Une boucle LOOP avec une variable (TOUR) qui va indiquer combien de fois il faut faire de tour d’angle.
  2. La formule du rayon en fonction de l’angle. La formule donnée dans le dessin a été faite un peu au hasard


Un cercle, que l’on peut aussi appeler une courbe circulaire, est simple : le rayon ne bouge pas et l’angle varie de 0 à 360°.




Bien sûr, cela donnerait exactement le même résultat en utilisant le point polaire avec ROTATE.


L’arc de cercle

Je vous entends déjà : « mais pourquoi faire un cercle en coordonnées polaires alors que nous avons la fonction CIRCLE ». Effectivement au premier abord, cela semble assez peu utile. Seulement, la fonction CIRCLE ne permet pas de tracer des arcs de cercle. Pour le faire, il faut passer par une fonction CIRCLE et une opération DIFFERENCE, ce qui n’est pas très pratique.

Avec notre cercle polaire, nous pouvons facilement faire l’arc que nous voulons en choisissant le début et la fin en changeant simplement la variable de LOOP puisqu’elle représente l’angle. Reprenons, nos blocs qui dessinaient un cercle et réalisons deux arcs.



Le premier bloc fait un arc entre 15° et 77°, c’est à dire un arc de 62° et le second arc de 55° commençant à 99°.Moins facile à faire avec CIRCLE, DIFFFERENCE et INTERSECTION !


La part de tarte

Bien sûr, dès que l’on voit le dessin précédent, on se demande pourquoi ne pas les transformer en deux parts de tartes. Cela irait si bien avec la glace à l’italienne réalisée en début de livre. Miam !




Regardons un peu ces blocs. Un module « 2D droite polaire » permet de faire un segment de droite, c’est à dire un bout de droite avec trois paramètres :

q L’azimut, c’est à dire l’angle que va faire cette demi-droite par rapport à l’axe des X

q Le début du rayon, pour commencer ce segment

q La fin du rayon, pour finir le segment

Ensuite, il suffit d’appeler autant de fois le module que nous voulons dessiner de segments. Tiens quelqu’un a mordu dans la part de gauche !!