samedi 25 avril 2020

Voile : Un rapporteur Breton Polaire


C'est vrai que je suis un fan de fourrure polaire, mais dans ce post nous allons parler de polaire de voilier.

Polaire et VMG (Velocity made good)

Une polaire est une courbe théorique qui donne la vitesse du bateau en fonction du vent, en force et en angle par rapport au bateau.

 

Ceci est une polaire. Elle indique que la VMG, c’est à dire la vitesse maximale par rapport à l’axe du vent ( projection sur l’axe vertical) est atteinte pour un angle de vent arrière de 135°. Sur ce bateau, l’idéal est de faire 50% du trajet à 135° par rapport au vent, empanner et faire le reste du trajet à 135° du vent sur l’autre amure.

Et pour remonter au près, l'angle de 45° est optimal sous génois.

Le rapporteur Breton

Autre noble invention, le rapporteur breton est une règle de navigation qui possède un disque mobile de type rose des vents.



Une fois la règle positionnée sur la carte, il suffit de faire tourner le disque pour indiquer le nord : le quadrillage permet de se caler précisément sur les lignes verticales ou horizontales de la carte. Ainsi nous avons l'angle très rapidement. La photo est "mon" rapporteur breton qui m'accompagne depuis environ 30 ans, donc pas de souci de solidité avec l'axe.

Un calcul simple mais difficile en mer

Quand on prépare une navigation sans logiciel, il n'est pas facile de combiner le cap du bateau et la polaire du bateau, c'est à dire quelle voile, quelle vitesse prévoir.
Le pire arrive en régate côtière où l'on doit vite savoir si c'est le spi asymétrique ou le symétrique qu'il faut envoyer et on essaye désespérément de faire un calcul de type (angle du vent) - (angle du bateau le tout modulo 360 tout en regardant les autres bateaux.

Et si en plus, une houle pernicieuse vous a rendu nauséeux ...

Le rapporteur breton polaire

L'idée est de rajouter un deuxième disque qui indiquera la polaire du bateau.


On voit une polaire composée d'un génois (en bleu), d'un asymétrique (en rouge) et d'un spi symétrique (en vert). Exemple tout à fait théorique orienté vers l'enseignement.
Le disque polaire comporte une flèche noire qui va indiquer le cap du vent (ici 140°). Il suffira de tourner le disque initial, celui de la rose des vents pour toujours avoir la polaire en fonction du cap.


Dans notre exemple (vent à 70°), jusqu'à la pointe de Minard (cap au 160°), le génois est la bonne option, mais on doit pouvoir préparer l'asymétrique sur tribord pour la suite lorsque le cap passera au 180°.
Pas de calcul, il suffit de mettre à jour le disque polaire en fonction du changement de vent.


Passons à la construction

Hélas, Vagnon ne met qu'un seul disque sur ces rapporteurs donc nous allons devoir les modifier. Excellent occupation d'un samedi de confinement ... si vous avez le matériel.

Tout d'abord, choisir le rapporteur breton avec le moins de surcharge sur le disque compas. Puis le démonter.


Et voici ce que vous obtenez, une règle et un disque.


Ensuite, il faut préparer les disques polaires. Une feuille de plastique épais (0,5 mm environ) et un cutter  circulaire sont les bienvenus.


Après cela, faîtes une flèche au feutre indélébile. J'y ai ajouté une des graduations de la règle. Laissez un peu sécher l'encre.



Et pour finir, il suffit de remonter le tout, de préférence en ne mettant pas la flèche de la polaire sur le dessous pour protéger l'encre.


Et voilà, c'est terminé, à vous de jouer et de dessiner la polaire de votre bateau avec des feutres indélébiles.

Effectivement, il faut au préalable avoir la machine à oeillet, des oeillets en laiton, une perceuse avec un forêt du diamètre des oeillets.


Entre nous, ce serait tellement plus simple si VAGNON et BROCEMER faisaient cela directement en usine ... d'ailleurs, pas de souci, si tenté que ceci rentre dans le cadre d'une invention, ce que je doute, je la laisse dans le domaine publique ( creativ commons, no parternity).

Par ailleurs, une telle règle peut aussi servir, dans les stages de voile, à expliquer la notion de polaire. 







dimanche 5 avril 2020

La blockchain expliquée à mes filles




Dis Papa, c’est quoi la Blockchain ?

La blockchain c’est un programme d’ordinateur qui permet de jouer à plusieurs en toute sécurité.
Prenons un exemple et rappelez vous quand vous jouez au Monopoly avec vos cousines. Vous êtes obligées de tout le temps vérifier ce qu’elles font car elles trichent beaucoup. Avec une blockchain, c’est le programme qui va assurer la sécurité, c’est à dire que personne ne peut tricher.

Mais pourquoi cela s’appelle une blockchain, il y a des blocs enchaînés ?

Oui et pour vous l’expliquez nous allons prendre un autre jeu : Scotland Yard. Vous vous rappelez, le joueur qui a le rôle de cambrioleur : il ne met pas sa position sur le plateau de jeu mais l’indique sur un papier. Et tous les 3 tours il doit l’indiquer à tout le monde sa position.  
Les mouvements du voleur entre 2 phases pour laquelle la position est connue constitue un ‘bloc”. Et les différents blocs sont mis bout à bout pour faire une chaîne de blocs.


Dans Scotland Yard, ce sont les autres joueurs qui contrôlent si  chaque bloc est correct et si la suite des bloc est correct, dans la blockchain c’est le programme informatique qui vérifie.


Mais si le voleur change ce qu’il a écrit, il peut tricher ?

On peut l’imaginer. Le joueur-voleur efface vite son papier et remet d’autres positions. C’est déjà compliqué dans Scotland Yard car le joueur-voleur et tricheur doit recalculer toutes les autres positions des autres joueurs à chaque tour pour ne pas les utiliser. Donc cela prend du temps et il n‘en a pas assez.
Si en plus on utilise un bic indélébile et un bloc de papier dont les pages ne peuvent ni s’effacer ni se détruire cela rend toutes tentatives de tricherie presque impossibles.

Mais comment la blockchain fait pour empêcher de tricher ?

Un peu comme vous au Monopoly : chaque joueur surveille les autres et tout le temps. On recompte dans sa tête le nombre de cases, on regarde qu’ils ne déplacent pas un pion en douce, on regarde qu’ils rendent bien la monnaie et qu’ils n’en prennent pas en direct dans la banque.
Le programme blockchain fait pareil : le même programme avec les mêmes données est installé à l’identique sur les ordinateurs des joueurs et chaque ordinateur fait exactement les mêmes calculs que les autres. Les ordinateurs des joueurs sont appelés “node” (ou noeud en français).
Si un seul joueur change le programme sur son propre ordinateur, il sera vite repéré. Si beaucoup de joueurs se mettent d’accord pour tricher, on peut imaginer qu’ils y arrivent mais cela se verra vite et demande une grosse organisation.
En plus, la Blockchain utilise un équivalent de bloc de papier que l’on ne peut pas effacer, les pages ne peuvent pas être déchirées ni mises dans un ordre différent. Un peu comme dans notre Mister X amélioré.
La blockchain peut être changée mais il faudrait tout recalculer et beaucoup plus vite que tous les autres joueurs.

Mais la maîtresse nous a dit que la blockchain permettait de mettre tout le monde d’accord ?

Le fait de se mettre d’accord ensemble se nomme, dans le monde blockchain, le consensus. En réalité, il y a deux consensus.
  1. Le premier permet définir le jeu auquel on va jouer et les règles. Par exemple, on dit que l’on va jouer au Monopoly ! et si tout le monde est d’accord on y joue. Et si un ou plusieurs ne sont pas d’accord, ils n’y jouent pas.
    Ce premier consensus, celui qui va définir le jeu et les règles est le plus important. Et sur celui-ci, la blockchain n’aide pas. Nous ne sommes pas en train de jouer mais de choisir le jeu.
  2. Une fois le choix fait, les règles sont écrites sous forme informatique et la blockchain va les mettre en oeuvre sans que l’on puisse tricher. Et “tricher” signifie simplement changer les règles au profit d’un ou plusieurs joueurs.
    Le consensus que la blockchain réalise est de garantir à chaque nouveau bloc que les règles ont été respectées.
    Il serait plus juste de parler de “consensus de bonne exécution des règles initiales”.


Mais tout le monde peut jouer sur la blockchain ?

Oui. L’avantage de la blockchain est que nous  pouvons imaginer de jouer au Monopoly avec plusieurs millions de joueurs, sans les connaître et en ayant confiance. Pour être précis, en ayant confiance qu’ils ne pourront pas changer les règles à leur profit. Une blockchain oú toute personne peut jouer est dite “persmissionedless”, c’est à dire sans permission préalable.


D’autres sont dites “permissioned” car seuls les joueurs autorisés peuvent venir : vous invitez vos cousines mais pas vos voisins !

Mais pourquoi limiter à certains joueurs si on peu avoir confiance même avec des inconnus ?

Rappelez-vous, on ne peut avoir confiance que dans l’exécution du jeu. Après, il faut savoir les enjeux du jeu.
Par exemple au Monopoly, on peut jouer uniquement car dehors il pleut : on dit qu’il n’y a pas d’enjeu.
On peut aussi jouer en disant que celui qui perd fera la vaisselle le soir, ou celui qui gagne aura deux parts de dessert. Dans ce cas, il faut pouvoir forcer le perdant à faire la vaisselle. Et pour cela, la blockchain ne peut rien. Il faut des parents ou être sûr que les joueurs seront “bon joueur” après la partie de Monopoly.

Mais à quoi cela peut servir à part pour jouer ?

Dans l’économie réelle, il y a beaucoup de situation qui ressemble à des jeux. Regardez encore le Monopoly : on circule, on achète des terrains, des maisons, on paie si on tombe chez un autre joueur. Cela ressemble à des situations que l’on rencontre dans la vie courante.


Et la blockchain est très pratique pour gérer ce type de situation : il y a un livre de compte, c’est à dire un peu comme des billets mais c’est écrit sur une feuille au lieu de les échanger physiquement. Ce livre s’appelle le “ledger”.
Ensuite, on peut utiliser un autre livre de compte mais pour compter les emplacements (“Avenue Mozart”, “rue de la Paix”,...) et éviter les tickets cartons. Le fait de mettre l’économie réelle sous forme de livres de compte s’appelle aussi “la tokenisation de l’économie”.

C’est quoi les tokens ?

Les billets de Monopoly vus par la blockchain se nomme crypto-monnaie. Cela fait plus chic !
Et quand cela représente autre chose, les emplacements, les maisons, les hôtels, on parle de préférence de tokens (le mot anglais pour jeton). Il peut y avoir pleins de sortes de tokens en fonction de ce qu’ils peuvent représenter dans la vie réelle.


C’est vraiment utile de tout mettre sous forme de tokens ?

Un autre avantage de la blockchain est la sécurité dans les échanges. Si je te donne 20 000 euros contre “Avenue Mozart”, il peut toujours y avoir un risque. Risque pour toi si tu me donnes la carte “Avenue Mozart” avant que je te donne l’argent et risque pour moi si je donne l’argent avant.
La blockchain, avec son système programmé, fait l’échange en même temps ou pas du tout.Un peu comme si tu donnes la carte à un autre joueur et moi je donne l’argent à ce joueur qui fait l’échange. Un tel joueur s’appelle dans la vie courante un “tiers de confiance”. Et dans la vie courante, ce “tiers de confiance” fait payer son rôle.
Dans notre Monopoly sur Blockchain, c’est la blockchain qui jouerait ce rôle de tiers de confiance.

On peut donc acheter une maison sans risque à un inconnu ?

Sur la blockchain, en théorie oui. Je mets mes euros de mon compte bancaire sur la blockchain et je fais l’échange. Je vais recevoir un “token de ma maison”. Mais il est toujours important que quelqu’un de sûr me garantisse que ce token est vraiment une maison. Sinon, je n’ai acheté qu’un token, c’est à dire un nombre sur un ordinateur !


Même si la blockchain peut remplacer le tiers de confiance pendant un échange, Il est donc important qu’il reste des tiers de confiance pour échanger les tokens avec des objets réels. Si j’achète une maison-token il faudra bien qu’un notaire me garantisse qu’il y a une vraie maison qui m’attend et mon acheteur devra aussi avoir une banque pour que la crypto-monnaie que je lui ai échangée deviennent des euros.

Mais comment la blockchain sait qui sont les joueurs et si c’est bien eux qui jouent ?

Elle ne le sait pas ! Comme pour le Monopoly, sur le plateau on ne voit que des pions.


Il y a un mécanisme qui fait que le pion ne peut bouger qu’avec une clé secrète qui est créée au moment de commencer le jeu. Alors, surtout ne perd pas ou ne te fait pas voler ta clé secrète, car tu auras beau essayer de dire à la blockchain que ce n’est plus toi qui joue, elle est programmée pour ne croire que la clé secrète.


Et on peut faire tous les jeux que l’on veut ?

Pas vraiment. Les calculs pour enchaîner les blocs prennent du temps. Donc on utilise la Blockchain que pour les parties du jeu qu’il faut vraiment sécuriser. Un peu comme dans Scotland Yard : on laisse jouer et on contrôle de temps en temps. Dans votre jeu Star Stable (N.D.L.A : un MMO sur les chevaux), il n’y pas pas besoin de blockchain lorsque vous vous promenez simplement dans le décor.


Et si on a besoin de regarder dans le dictionnaire comme au Scrabble ?

C’est vrai, dans certains jeux, la blockchain peut avoir besoin d’informations hors du jeu. Pour cela on demande à quelqu’un en qui on peut avoir confiance : par exemple Larousse pour un dictionnaire informatique.
On appelle ce « quelqu’un » un Oracle. Pourquoi ? Comme aux temps des grecs, la blockchain n’a aucun moyen de vérifier ce que dit l’Oracle, elle doit lui faire confiance aveuglément. Imaginez si je pouvais pirater le dictionnaire et ajouter des mots imaginaires en jouant au Scrabble ? Enfin j’aurais une chance de gagner !
Vous comprenez bien que la blockchain ne résout pas l’ensemble des soucis venant des tricheurs.


Et c’est la blockchain qui lance les dés ?

C’est surement le problème le plus difficile à résoudre en informatique : on dit générer un nombre aléatoire. Le plus difficile est de savoir si personne ne triche: il faut que le joueur garde l’impression que c’est lui qui lance le dés et pourtant il faut que le résultat soit aléatoire.
Dans sa conception chaque noeud, c’est à dire chaque copie du programme sur chaque ordinateur des joueurs, fait les mêmes calculs que les autres donc chaque noeud doit avoir la copie du nombre aléatoire : on dit qu’elle est déterministe, c’est à dire sans aléa.

Les filles de la classe disent qu’un peut faire beaucoup d’argent avec la blockchain ?

C’est vrai et on peut en perdre beaucoup aussi. En fait les tokens sont un peu comme des cartes Pokémon. Ces tokens s’achètent et se vendent et comme certains croient que la blockchain va changer le monde, il y a de la spéculation. Un peu comme les collectionneurs qui vont achter très cher une carte Pikachu d’il y a 20 ans, enfin je suppose, ou bien une collectionneur qui achète des vieux billets de Monopoly. Mais tant pour la blockchain que pour les vieux billets c’est l’offre et la demande qui fait la valeur. Il n’y a pas de valeur d’usage intrinsèque comme un diamant ou une pépite d’or.

On ne voit pas bien à quoi cela pourrait servir dans la vie réelle ?

Dans l’économie réelle, il y a de nombreux échanges entre les personnes, les entreprises, les gouvernements et collectivités. Lorsque ces échanges sont deux à deux, comme quand vous jouez au Go, les technologies existent depuis longtemps. Par contre si l’échange implique de nombreux acteurs (plus de deux)  la Blockchain apporte un plus. En effet, Plus il y a d’échanges, plus les tricheries, petites ou grosses, arrivent. En utilisant à bon escient la blockchain on pourrait rendre ces échanges plus transparents et moins propices à la mauvaise foi des différents acteurs.

Dis Papa, comment on fait les bébés ?

Euh … mais … est-ce que je vous ai parlé des arbres de Merkel ? Ils entourent une clairière secrète et magique  dans le Vercors … mais pourquoi vous partez, je n’ai pas fini …

Cyril Vignet 




Engrenage et développante du cercle



La développante du cercle


Aujourd'hui nous allons explorer le monde des engrenages.

Dans Wikipédia, nous apprenons que la développante du cercle est une courbe mathématique ayant des propriétés géométriques qui font qu'elle est utilisée pour dessiner les engrenages. https://fr.wikipedia.org/wiki/D%C3%A9veloppante_du_cercle

Commençons donc par construire un cercle en deux dimensions. Cependant pour vous rappeler la construction de fonction nous allons utiliser les courbes paramétriques du cercle :

  • x=R.cos(t)
  • y=R.sin(t)
pour t variant de 0° à 360°



Maintenant, utilisons la formule donnée par Wikipédia pour la développante :
  • x = R.(cos(t)+t.sin(t))
  • y = R.(sint(t)-t.cos(t))

Voilà ce que cela donne.



Pas terrible ! en regardant le dessin on voit quelque point qui partent vers la gauche mais cela ne ressemble pas au dessin de Wikipedia.

Je montre cela car il y un truc : la courbe donnée par Wikipédia et sur tous les sites est une courbe ou (t) est en radian. Par contre blockScad utilise les degrés pour ses fonctions trigonométriques (la famille à laquelle sin et cos appartiennent).

il faut donc changer (t) en radian pour l'exprimer en degré avec une simple règle de trois car PI radian = 180 degré.

et voici le résultat, beaucoup plus compatible la référence du savoir mondial. 


Attention aux unités, elle sont souvent implicites, donc restons vigilant.

Quelques modifications sur le bloc de la développante pour rajouter deux paramètres, outre le diamètre du cercle de référence déjà présent :
  1. "neg" pour faire partir la courbe dans l'autre sens, c'est à dire un "-1" pour la variable "y"
  2. "haut" pour facilement faire varier la longueur de cette courbe spirale





Une roue dentée


Maintenant, passons aux engrenages sur la base d'un tutoriel utilisant un logiciel de dessin.


De notre coté, nous allons suivre ce tutoriel mais en utilisant que des formules mathématiques, dans la mesure du possible.

L'image ci-dessous, issu du tutoriel précédent,  reprend les différentes paramètres et les définitions.

Nous allons construire un engrenage de 20 dents (Z=20) et de module 3 mm (M=3) :
  1. un premier cercle de diamètre primitif (Dp = M.Z)
  2. un deuxième cercle de diamètre extérieur (De = (Z+2).M
  3. le cercle de base (Db = Dp.cos(alpha)). alpha est l'angle de la ligne d'action.


Pour l'instant, pas de souci particulier grâce à notre petite fonction "cercle" dont nous avons changé la variable d'entrée pour passer en diamètre.

Par contre, nous allons gagner du temps dans les phases suivantes car  en lieu et place d'une construction géométrique par succession d'arc de cercle nous allons utiliser notre formule magique de Wikipédia.



il faut régler manuellement le paramètre "haut". C'est fait en deux ou trois essais.


Hélas, nous ne pouvons pas compter sur des essais. il faut donc trouver ce paramètre par calcul. Le point d'intersection entre la développante et le cercle extérieur répond à deux équations : celle de la développante et celle du cercle.

Dans le dessin suivant, le récapitulatif.



Donc nous cherchons la valeur de (t) qui crée le point (A,B) avec pour la développante :
A = (ZMcos(alpha)/2).(cos(t)+t.sin(t))
B = (ZMcos(alpha)/2).(sint(t)-t.cos(t))

d'autre part, on sait que (A,B ) est sur le cercle extérieur donc A^2 + B^2 = ((Z+2)M/2)^2 (théorème de Pythagore)

on simplifie par /2 et M et on obtient :
  1. Z^2[cos(t)+t.sin(t)]^2 + [sin(t)-t.cos(t)]^2 = (Z+2)^2/cos2(alpha)
  2. cos2(t)+2tcos(t)sin(t))+t^2sin2(t) + sin2(t) - 2tsin(t)cos(t)+t^2cos2(t) = (Z+2)^2/(Z^2.cos2(alpha)) en développant
  3. 1+0+t^2.(1) = (Z+2)^2/Z^2cos2(alpha) par regroupement et application de cos2+sin2 = 1
  4. t= racine carrée ((Z+2)^2/Z^2cos2(alpha) - 1)
et voilà le travail. Faut reconnaitre que cela plus chic, une bonne formule !





Maintenant, nous traçons le cercle de pied dont le diamètre est Di = Dp -2,5.M soit Z-2.5M comme nous le demande le tutoriel.





En suivant le tutoriel, il faut tracer un trait entre le cercle de pied et la développante.
Ceci se fait avec une boucle qui va entre le rayon du cercle de pied et le rayon du cercle de base.


Ensuite, le tutoriel demande de voir l'angle entre la droite initiale de départ de la développante (en orange sur le dessin du dessous) et la droite qui intersecte la développante au niveau du cercle primitif (le trait en pointillé sur le dessin). En effet, c'est à cet endroit précis que la dent touche la dent de l'autre pignon.



Comme nous n'avons pas de possibilité de voir sur le logiciel, il nous faut à nouveau faire un calcul.
Dans un premier temps, trouvons la variable (t). Même principe que précédemment mais ce n'est pas le même cercle.


Donc nous cherchons la valeur de (p) qui crée le point (C,D) avec pour la développante :
C = (ZMcos(alpha)/2).(cos(p)+p.sin(p))
D = (ZMcos(alpha)/2).(sint(p)-p.cos(p))

d'autre part, on sait que (C,D) est sur le cercle primitif donc C^2 + D^2 = (ZM/2)^2 (théorème de Pythagore)

on simplifie par /2, Z et M et on obtient :
  1. [cos(p)+t.sin(p)]^2 + [sin(t)-t.cos(p)]^2 = 1/cos2(alpha)
  2. cos2(p)+2p.cos(p)sin(p))+t^2sin2(p) + sin2(p) - 2p.sin(p)cos(p)+t^2cos2(p) = 1/(cos2(alpha) en développant
  3. 1+0+t^2.(1) = 1/cos2(alpha) par regroupement et application de cos2+sin2 = 1
  4. t= racine carrée (1/cos2(alpha) - 1) = tangente(alpha) après petits calculs pas bien compliqués (trop horrible, diraient mes filles !)
Ce serait trop simple si c'était fini. Il faut trouver l'angle de ces deux droites. Hors nous savons que la tangente de cet angle est D/C, et donc l'angle est ATAN (D/C), ATAN étant la fonction ArcTangente que Blockscad a la bonne idée de mettre à disposition.

En simplifiant D/C et en appliquant notre résultat pour (p), nous obtenons :




Ce qui est assez proche du 0.90° trouvé dans le tutoriel. Regardez le code, il ne faut pas oublier de rajouter notre conversion d'angle dans les fonctions SIN et COS.
Pour contrôler, nous avons utilisé la fonction text 2D pour afficher le résultat. 

Ce n'est pas fini ! Il faut tracer la droite qui représente l'axe de la dent (360/4Z)+notre précédent décalage.


Continuons en traçant la droite avec le décalage d'ans l'autre sens.


Avant d'aller plus loin, nous allons fabriquer une évolution de notre block "cercle" pour faire des arcs de cercle. J'ai le plaisir de vous présenter "cercle2" :


 Ce n'est pas non plus, l'invention du siècle, mais cela va être bien pratique.

Le tutoriel nous demande de supprimer le cercle de pied et de ne garder que la distance entre le bas de la dent et la droite à décalage négatif.

Nous allons utiliser simplement notre nouveau module de cercle, le démarrer à zéro et le terminer à l'angle de rotation de la droite.


et bien sûr, l'ancien module qui traçait le pied de cercle est désactivé. Continuons pour le cercle extérieur.

Le diamètre sera celui du cercle extérieur (nous l'avons déjà), l'angle de départ est l'angle de rotation que nous avons tracé (il faudra peut être voir  à changer le signe). Concentrons nous donc sur l'ange d'arrivé, qui correspond à l'intersection entre la développante et le cercle extérieur.

Nous avons déjà calculé ce point : (A,B). Donc l'angle se calcule par l'arcTangente avec des commentaires sous le dessin.


Le calcul avait déjà été fait et se matérialise par le paramètre "haut" de la développante. Se paramètre a été nommé variable "EE" pour plus de lisibilité.

Ensuite on retrouve se paramètre dans notre formule avec ATAN (sint(t)-tcos(t))/(cost(t)-tsin(t)).

A ce stade, le tutoriel n'utilise que les fonctions de miroir et de boucle pour réaliser les Z dents.

Ramenons la dent sur l'axe des X et supprimons les cercles initiaux. Il suffit d'utiliser la fonction rotation suivant Z de la droite tracée.


un petit coup de miroir et une boucle plus loin.





et nous avons notre engrenage pour Z=20.
et pour Z=11


Effectivement, cela vaut le coup de faire les calculs au moins une fois. ces blocs sont en partage libre de droit sur le site de Blockscad.

 
Je ne résiste pas au plaisir d'un dernier dessin avec une extrusion.


En conclusion, il faudrait une bonne âme pour vérifier les calculs ;-) 

mercredi 1 avril 2020

Boulier Elliptique compatible Blockchain

Ce nouveau post va nous permettre de réaliser une boulier elliptique. Nous verrons en conclusion du post tous les intérêts dans le domaine des blockchain qui font un usage immodéré de la cryptographie elliptique.

Revenons un peu sur les courbes elliptiques. Comme l'explique Wikipédia ce sont des courbes de la forme Y^2=aX^3+bX+c  soit Y = RacineCarré  (aX^3+bX+c) pour une demi-courbe.


ce qui en BlockScad se traduit par le bloc suivant (pour les nouveaux sur ce site, voir les étapes précédentes sur BlockScad) avec des paramètres soigneusement choisi. Nous reviendrons sur le choix en fin de post.

Avec ce block nous allons construire une première courbe.


la fonction Kx est une boucle entre -2.34862 (la valeur de X pour que Y soit nul et 4 pour ne pas faire un boulier trop grand.

Sur le graphique, l'axe rouge est le X et l'axe vert est le Y.

A ce stade, réalisons la courbe complète en utilisant une symétrie par rapport au plan XZ


Ne vous inquiétez pas, la taille des branches est la même : c'est simplement l'affichage 3D qui donne une impression de dissymétrie.

Maintenant, nous voulons ajouter un objet qui puisse facilement glisser sur la courbe elliptique pour agir comme tangente à la courbe.


Nous allons décrire dans le détail les différentes étapes.


En premier temps, un anneau torique (en bleu) qui devra coulisser sur la courbe. Le programme ne pose aucun souci. Je vous passe les détails sur le choix des mesures : un peu de calcul très simple et surtout beaucoup d'essais et de vérification sous plusieurs angles du dessin 3D.

En jaune, un cylindre creusé avec seulement 5 faces et en rouge l'axe qui rentre dans le cylindre.

Maintenant il s'agit de :

  1. positionner le tore sur la courbe
  2. d'orienter le tore pour qu'il soit bien perpendiculaire à la courbe.

Pour positionner notre axe sur la courbe, nous allons utiliser la fonction qui nous donne la courbe. Regardez le programme ci-dessous.



Nous avons seulement ajouter une fonction TRANSLATION  avec X et Y qui est le résultat de la courbe elliptique. Le paramètre "bool" est simplement à 1 ou -1 suivant que l'on veut un place sur les Y positifs (demi-courbe du haut) ou sur les Y négatifs (demi-courbe du bas).

En complément, nous avons mis ce petit bout de code sous forme d'un module "tangente" pour facilement passer les paramètres.

Mais, comme nous pouvons le constater sur la représentation 3D, ce nouvel objet interfère avec la courbe. Il est donc temps de faire la deuxième partie du programme, celle qui va orienter l'axe rouge comme tangente à la courbe.

Au passage, remarquons que le tore bleu et le cylindre jaune seront donc à 90° de la tangente.


Entouré d'un liseré jaune, nous avons ajouté une rotation verticale, c'est à dire suivant l'axe des Z.

Pour ce faire nous utilisons les propriétés suivantes des mathématiques du secondaire (je sais la seconde c'est loin mais ce n'est pas pour rien que l'on devait apprendre ces leçons ;-) 

  1. la tangente de l'angle à un courbe est donné par sa dérivée
  2. l'angle est donc donné par la fonction inverse de la tangente, c'est-à-dire ArcTangente (ou ATAN en BlocScad)
  3. et comme nous l'avons remarqué précédemment, il faut rajouter 90 pour rester orthogonal à la tangente
  4. et toujours notre variable "bool" pour choisir si c'est en haut ou en bas sur la courbe
Donc la formule du haut reste simple à comprendre. Il nous reste à calculer la dérivée de la courbe elliptique.
C'est le module en dessous. Petit rappel nécessaire sur les dérivées de RacineCarré ? Je vous ai trouvé un site tout à fait adapté. https://homeomath2.imingo.net/derirac.htm

et voici donc notre belle courbe avec 2 droites tangentes.


le reste du projet est un peu de cosmétique pour pouvoir en faire une impression 3D.

On ajoute un cadre pour mieux tenir la courbe et aussi pour la prochaine étape.


Pas de souci particulier pour ce programme. Les bonnes valeurs par essais successifs (comme d'hab !)

Maintenant, rajoutons une réglette verticale.


Bien qu'un peu long, le module est très simple. Il s'agit d'une réglette qui peut coulisser sur le cadre (axe des X) et qui représente une vertical sur l'axe des Y.

A partir de maintenant, nous avons tous les éléments pour graduer notre règle. Si nous partons du principe que la tangente est au point (1) le point (2) est représenté sur la figure.



d'où l'intérêt de réaliser la réglette.

le trois se déduit de l'intersection entre le 1 et le 2. 




Concernant l'impression 3D, il faut faire cela en deux fois. la courbe et le cadre puis les axes. Même si en dessous vous avez une simulation de la règle complète.




Revenons, un peu sur la courbe elliptique. Voici ce que cela donne sous GEOGEBRA.


Pour bien vous convaincre que le choix des paramètres est très important, voici un nouveau dessin avec des paramètres un peu changés.



et c'est ainsi que nous découvrons que nous aurions pu tomber dans un poisson d'avril ... uniquement si les paramètres initiaux avaient été mal choisis ;-)

Et pour tous ceux qui ont eu la patience de lire jusqu'au bout, voici le bidule réalisé avec SCULPTEO.


Il y a surement quelques optimisations à faire d'autant plus que cela n'a vraiment rien d'un boulier ;-)