• Dôme géodésique - Lampe "design"

    Dôme géodésique - Lampe "design"

    Ce projet a pour objectif de créer un dôme géodésique, ou géode, complément paramétrable. 

    Tous les types de solides de bases (III, IV, V) seront possibles et tous les couples de subdivision (a, b).
    Une réflexion sur la construction d'une maquette avec des moyens simples (CNC, Laser) est proposée dont l'objectif final est de construire une lampe décorative.
    Si un sujet intéressant vient à moi, il est éventuellement possible qu'une structure géodésique soit calculée (efforts et déplacements) grâce à Karamba.


    En architecture, un dôme géodésique est une structure sphérique, ou partiellement sphérique, en treillis dont les barres suivent les grand cercles (géodésiques) de la sphère. L'intersection des barres géodésiques forme des éléments triangulaires qui possèdent chacune leur propre rigidité, provoquant la distribution des forces et des tensions sur l'ensemble de la structure (la tenségrité), qui est de ce fait autoporteuse, laissant l'intérieur entièrement disponible (pas de piliers).

    Wikipedia


    Sources des images extérieures à ce blog :

    PARTIE 1 - CONSTRUCTION GÉOMÉTRIQUE

    I-1 - Solide de Platon

    Le fondement d'un dôme géodésique est un solide de Platon. C'est-à-dire un polyèdre régulier : toutes ses faces sont identiques et régulières (équilatérales) et tous ses sommets ont le même nombre d'arrêtes convergentes.

    Dans le cas particulier de la géode, il faut choisir un solide de Platon dont les faces sont triangulaires. Ils sont au nombre de trois. On les identifie par le paramètre N qui définit le nombre de faces se rejoignant à un même sommet :

    • le tétraèdre régulier : 4 côtés, N = III
    • l'octaèdre régulier : 8 côtés, N = IV
    • l'icosaèdre régulier : 20 côtés, N = V

    Nous pourrions utiliser le plug-in de Grasshopper Lunchbox qui permet de générer grâce à un seul composant chacun de ces solides. Mais nous allons plutôt les construire avec les composants de base de Grasshopper pour trois raisons :

    • c'est mieux pour apprendre !
    • ce sera plus facilement paramétrable
    • Lunchbox utilise un truncation parameter dans son composant qui rend les solides peu propices à une utilisation postérieure (les faces et les côtes sont notamment peu manipulables).

     Construction de l'icosaèdre régulier

    Icosaèdre régulierL'icosaèdre régulier (que je nommerai dans la suite seulement "icosaèdre" pour simplifier) est un solide de Platon à faces triangulaires et à 20 côtés.
    Son N vaut 5, ce qui signifie que chaque sommet est commun à cinq faces.

    C'est le solide de base le plus utilisé dans la construction des dômes géodésique. En effet, son grand nombre de faces permet d'obtenir des arrêtes moins marquées.

     

    Icosaèdre régulierMéthode de construction de la Lunchbox : je fais ici un petit apparté, puisque je parlais plus tôt des solides tronqués de la Lunchbox. L'exemple de l’icosaèdre illustre très bien cette méthode de construction. Lunchbox utilise la propriété constructive de l’icosaèdre qui permet de le réaliser en tronquant progressivement les sommets d'un octaèdre régulier jusqu'à obtenir uniquement des triangles équilatéraux. Cette méthode astucieuse ne permet malheureusement pas une manipulation facile dans Grasshopper des surfaces ainsi obtenues.

    Nous utiliserons dans notre construction une autre propriété de l'icosaèdre. On peut démontrer que la sphère circonscrite à l'icosaèdre a pour rayon a√(φ√(5)) où φ est le nombre d'or et a la longueur de chaque arrête. De plus, les nombreuses propriétés de symétrie de l'icosaèdre permettent de lui donner une représentation simple dans un repère orthonormé. Ainsi ses sommets se situent aux coordonnées (±a/2 ; ±a/2φ ; 0) permutées circulairement. Cela signifie que pour des côté de longueur a = 2, les sommets se situent aux coordonnées données par ce schéma :

    Sommets icosaèdre régulier

    Dans Grasshopper, voici les étapes qui mènent à la réalisation de l'icosaèdre :

    • Création des trois coordonnées permutées circulairement :
      • Un Number Slider nommé a permet de régler la longueur des côtés de l'icosaèdre
      • Lui est appliqué Negative afin de générer les inverses des coordonnées
      • Division par 2 achève de créer la première coordonnée ±a/2
      • Graft est appliqué sur l'outpout du résultat
      • Golden Ratio permet d'insérer le nombre φ 
      • Multiplication entre Golden Ratio et le résultat ±a/2 donne la deuxième coordonnée ±a/2φ
      • La dernière coordonnée est simplement insérée via un Panel avec 0
    • Création des 12 sommets :
      • Trois composants Point XYZ sont insérés
      • Les coordonnées sont permutées circulairement (0 ; ±a/2 ; ±a/2φ) - (±a/2 ; ±a/2φ ; 0) - (±a/2φ ; 0 ; ±a/2)
    • Création de la surface l'icosaèdre :
      • Les points sont regroupés dans un composant Point avec l'input en mode Flatten
      • Facet dome appliqué sur ces points permet d'obtenir le dual polaire de l'icosaèdre, le dodécaèdre régulier (image ci-contre) dodécaèdre régulier
      • Disconitnuity permet d'en extraire les sommets
      • Remove Duplicate Points supprime les doublons
      • Facet dome appliqué sur ces sommets permet d'obtenir le dual du dual de l'icosaèdre... donc l'icosaèdre !
      • Enfin Surface appliqué sur le Pattern de l'icosaèdre achève d'en créer la surface

    Ci-dessous le logigramme de l'icosaèdre et la vue du résultat final (cliquez pour voir en grand) :

    logigramme icosaèdre

    icosaèdre régulier grasshopper

     Construction de l'octaèdre régulier


    octaèdre régulier

     

     

    L'octoèdre. A venir.

     

    Construction du tétraèdre régulier


    tétraèdre régulier

    Le tétraèdre. A venir.

     

     

     

     

    I-2 - Division des faces du solide de base

    Une fois le solide de base N = III, N = IV ou N = V choisi, il reste à choisir les deux paramètres de division a et b.

    Ainsi une géode est définie par un triptyque N-a-b. Par exemple, une géode ayant pour solide de base l'icosaèdre (N = V), divisé selon a = 7 et b = 3 sera identifiée selon la dénomination Géode V-7-3.

    • a doit être en entier positif
    • b doit être un entier compris dans [0 ; a[

    La méthode de division n’utilise que les paramètres a et b.

    • Etape 1 : choix d'une face du solide de base et identification des sommets A, B et C :

     

     

    • Etape 2 : l'arrête AB est subdivisée en a+b segments. Les points sont numérotés de 0 au sommet A, jusqu'à a+b au sommet B :

     

    • Etape 3 : le point C est relié au point Pa :

     

    • Etape 4 : on trace les parallèles au segment CPa passant par chacun des points P0 P1 ... Pa+b : 

     

    • Etape 5 : les étapes 2 à 4 sont répétées sur les arrêtes BC et AC :

     

     Dans Grasshopper, voici les étapes qui mènent à la division du solide de base : 

    • Préparation :
      • Un Number Slider reglé sur un nombre entier positif défini le paramètre a
      • Un Number Slider reglé sur un nombre entier positif défini le paramètre b
        Attention : ne pas oublier que b doit être strictement inférieur à a
      • Addition permet de faire la somme a+b qui servira à diviser les arrêtes
      • La Surface Solide de Platon créée précédemment est introduite dans un Brep Components pour en extraire les sommets. Ceux-ci sont alors classés dans un arbre en fonction de chaque face. Ainsi la dernière branche contient les trois sommets des faces
    • Division des arrêtes en a+b segments :
      • Trois List Item, réglés sur les item 0, 1 et 2 permettent de traiter indépendamment chaque sommet des faces. 
      • Trois composants Line rejoignent chaque couple de deux sommets pour créer les arrêtes. Cette construction permet une manipulation plus facile des arrêtes qu'en les prenant directement dans le Brep Components
      • Trois composants Divide Curve permettent de diviser chaque arrête placée dans l'input Curve par a+b placé dans l'input Count (j'ai placé a+b dans un Number avec le Wire Display en mode Hidden pour limiter le nombre de spaghettis)
    • Division des faces :
      • Trois List Item, réglés sur les item a (rentré également dans un Number avec le Wire Display en mode Hidden) permettent de sélection a-ième point de l'arrête
      • Trois Vector 2Pt reçoivent dans l'input A chacun des points Pa définis à l'étape précédente et dans l'input B les sommets opposés à l'arrête, on obtient donc les trois vecteurs qui définissent les lignes parallèles de la division
      • Trois Project Point reçoivent pour input Direction les vecteurs définis à l'étape précédente et dans l'input Geometrie les deux arrêtes opposées
      • Trois Line permettent de relier les points de la division en a+b de l'arrête avec les points de la projection qui vient d'être effectuée

    Ci-dessous le logigramme de la division et la vue du résultat final (cliquez pour voir en grand) :

    logigramme division faces géodésiques

    division faces géodésiques grasshopper

    I-3 - Projection sur la sphère

    La dernière étape consiste à projeter radialement les divisions du solide de base sur une sphère, généralement la sphère circonscrite au solide (mais ce n'est pas obligatoire).

     Dans Grasshopper, voici les étapes qui mènent à la projection des divisions sur la sphère : 

    • Obtention des géodésiques (lignes) :
      • courbes géodésiquesL'ensemble des Lines de l'étapes sont regroupé dans une géométrie Line avec un Wire Display en mode Hidden
      • Un Point XYZ définie l'origine, on laisse les coordonnées (0;0;0)
      • Un Number Slider permet de régler le rayon de la géode
      • Avec Extrude Point, on réalise l'extrusion centrale des lignes de la division du solide de base, on obtient la jolie figure ci-contre
      • On crée la Sphere d'origine O et de rayon défini précédemment
      • Enfin avec Brep|Brep, on obtient l'intersection de la sphère avec l'extrusion. Nous avons ainsi tracé les géodésiques de la géode.

    Ci-dessous le logigramme de la projection et la vue du résultat final (cliquez pour voir en grand) :

    logigramme projection géode         projection géode

    Obtention des faces planes :

    Afin d'obtenir des facettes que nous pourrons travailler, j'utilise une méthode qui ne marche que pour b = 0.
    Si vous avez une piste pour obtenir les facettes quel que soit b, contactez-moi !

    • Multiple curves (MCX) permet de résoudre les intersections de toutes les géodésiques. Ont obtient donc tous les points de la géode.
    • Cull Duplicates permet de supprimer tous les doublons dans cette liste de points. Attention à la tolérance si on fait une (toute) petite géode.
    • Facet Dome permet d'obtenir le polyèdre dual du dôme géodésique, également appelé géode en nid d'abeille. On place le résultats dans Surface afin de pouvoir retravailler les facettes dans la partie suivante (Réalisation). Si on voulait obtenir un dôme normal (facettes triangulaires), il faudrait chercher le polyèdre dual du dôme en nid d'abeille. Il aurait suffit d'appliquer un nouveau Facet Dome sur la collection de points définis par les centres des facettes en nid d'abeille.

    Ci-dessous le logigramme de la géode en nid d'abeille et la vue du résultat final (cliquez pour voir en grand) :

    logrigramme dual géodésiquedual géodésique en nid d'abeilles

    PARTIE 2 - RÉALISATION

    Pour la réalisation, je me suis fixé deux objectifs :

    1. Utiliser un moyen 2D (CNC, Laser, ...) : en effet, avec une imprimante 3D l'intérêt serait tout relatif puisqu'il suffirait d'y mettre directement la géométrie obtenue et... c'est à peu près tout.
    2. Donner une sens à cette géode : le but n'est pas de construire une géode pour construire une géode.

    J'ai donc décidé de réaliser une lampe à base de planches de carton de 2 mm d'épaisseur et sans colle.

    Voici le résultat obtenu en 3D - J'en profite pour remercier Nicolas MICHEL-IMBERT de ZAMAK design pour la qualité des ses rendus :

    Dôme géodésique - Lampe "design"

    A ce titre, j'invite à consulter deux projets de lampe qui se basent sur une géode :

     

                     

    Pour réaliser notre lampe, il va nous falloir :

    • Évider les facettes.
    • Créer les pièces de connexions entre elles au milieu des arrêtes.
    • Dessiner les encoches (pas de colle !).
    • Numéroter et projeter le tout sur un plan pour la découpe laser.

     Dans Grasshopper, voici les étapes qui mènent à l'obtention du projet 3D de réalisation : 

    • Préparation :
      • L'ensemble des facettes a été stocké dans une collection de surfaces dans Surface
      • Brep Components (Explode) permet d'en obtenir les faces, arrêtes et sommets. Pour des raisons pratiques, on range ces collections dans les géométries associées (Point, Curve ou Segment et Surface) avec le Wire Display en mode Hidden. Cela améliorera la lisibilité de la définition.
    • Évider les facettes :
      J'ai voulu évider les facettes en étoiles. Je n'ai trouvé sur Google le projet en bronze qu'après. Vu qu'il évide aussi les facettes en étoile, c'est un peu raté pour l'originalité de mon projet !
      • On déplace d'abord les sommets vers le centre des faces (qu'on a récupéré de la liste de points utilisée pour générer la Géode en nid d'abeille, il s'agit donc de l'output du dernier Cull Duplicates - sans oublier de le passer en Graft) : Un Vector 2Pt relie les sommets aux centres des faces, puis avec Amplitude, on lui donne la valeur du décalage avec un Number Slider. Move sur les sommets avec les vecteurs obtenus fini de déplacer les points.
      • On applique exactement la même méthode avec un point sur les arrêtes obtenu via un Point On Curve sur elles. Dans l'exemple j'ai pris un point à un quart du sommet pour donner un petit effet twisté aux étoiles. En déplaçant le point central des arrêtes, chaque branche des étoiles serait symétrique. On les déplace plus loin que les sommets.
      • Weave permet d'entrecroiser les deux listes après déplacement : un point dans l'angle, un point entre, un point dans l'angle, un point entre, ect.
      • Interpolate Crv avec en input Degree 3 et en input Periodic True permet de relier ces points et dessiner l'étoile.
      • On peut s'arrêter là, mais si on veut bien visualiser la facette, il faut découper les faces (input Base surface) avec les étoiles (input Curves) avec Surface Split, séparer la partie interne de la partie externe en deux listes grâce à Dispatch et ranger l'output A dans une collection Surface.
    • Tracé de la rainure :
      Une fois les facettes découpées, il faudra savoir dans quelle sens les tourner pour faire le montage. J'ai donc choisi de faire une rainure au laser à côté du premier bord de chaque facette, ainsi je pourrais le repérer facilement.
      • List Item sur les arrêtes en gardant l'item 0 permet de sélectionner la première arrête de chaque face.
      • On crée un Vector 2Pt entre le centre des faces (en mode Graft) et le centre de cette arrête (trouvé grâce à Point On Curve à 0,50) . On applique Amplitude à ce vecteur avec un Number Slider pour régler le décalage (j'ai pris 1 millimètre).
    • Cercles permettant de relier les facettes entre elles :
      On reliera les facettes aux centres de leurs arrêtes. Pour cela, on va créer des pièces circulaires dont les arrêtes sont les normales et il n'y aura plus qu'à dessiner les encoches permettant des les emboîter sur les facettes.
      • Avec Remove Duplicates Lines (qui est un composant de Karamba dont la version d'essai est gratuite et illimitée dans le temps) sur les arrêtes on supprime les doublons.
      • On prend les milieu avec Point On Curves à 0,50, ceux-ci sont les origines d'un Plane Normal (les normales sont les arrêtes dont on a enlevé les doublons).
      • On trace dans ces plans les cercles avec Circle, le rayon étant réglé avec un Number Slider.
    • Encoches dans les facettes :
      Nous voulons ici réaliser des encoches au milieu de chaque arrête. Elles auront l'épaisseur du carton et une longueur de la moitié du rayon des cercles afin de pouvoir les connecter entres eux.
      • Deux vecteurs sont créées avec Amplitude, les vecteurs de base sont les arrêtes, l'amplitude des premiers est l'épaisseur du carton (dans un Number Slider) divisé par 2 (avec Division) et celle des seconds, l'inverse de cette valeur (Negative).
      • On déplace avec deux composants Move le milieu des arrêtes (Point On Curve à Midpoint sur Arrêtes) respectivement avec chacune des deux familles de vecteurs précédemment créés.
      • On relie avec Line les points obtenus, on obtient l'épaisseur de l'encoche.
      • On crée un Vecteur 2Pt entre le centre des arrêtes et les centres des faces et on lui applique Amplitude avec la valeur du rayon des cercles divisés (avec Division) par 2.
      • On déplace avec Move les lignes créées avec ces vecteurs. Cela permet de délimiter l'encoche sur sa longueur.
      • Deux composants End Points nous permettent d'obtenir les extrémités des lignes avant et après le dernier déplacement. Toutes les output sont mises en Graft.
      • Avec Interpolate Crv on relie les points dans un ordre précis (le Start de l'épaisseur de l'encoche non déplacé, puis le Start des lignes déplacées, le End de ces mêmes lignes et enfin le End des lignes initiales). Les autres output sont Degree 1 et Periodic True.
    • Encoches dans les cercles-joints :
      Nous voulons ici réaliser les encoches dans les cercles qui joignent deux facettes par leur arrête commune. Elles s'encastreront dans les encoches des facettes
      • Deux vecteurs sont créés avec Amplitude, les vecteurs de base sont les ceux précédemment créés entre le milieu des arrêtes et les centres des faces, l'amplitude des premiers est le rayon du cercle divisé par 2 (avec Division) et celle des seconds, le rayon du cercle complet.
      • On déplace avec deux composants Move le milieu des arrêtes (Point On Curve à Midpoint sur Arrêtes) respectivement avec chacune des deux familles de vecteurs précédemment créés.
      • En rejoignant les deux listes de points ainsi créés avec une ligne (Line), on obtient la ligne médiane de l'encoche. Il reste à lui donner l'épaisseur du carton.
      • Il faut relier chaque couple de lignes à chacun des cercles : le plus simple est de couper la surface du cercle avec les lignes médianes (en mode flatten) des encoches via Surface Split.
      • On extrait les bords des surfaces ainsi créées avec Brep Edges afin de pouvoir sélectionner les lignes directrices des encoches.
      • On Dispatch les lignes intérieures (output Interior) pour pouvoir sélectionner séparément chacune des deux lignes génératrices des encoches.
      • On réalise deux Offset respectivement pour chacune des deux familles de lignes. En input Distance, on met la moitié (Division par 2) de l'épaisseur du carton et son inverse (Negative) en mode Graft. En input Plane, on met les plans des cercles que l'on obtient grâce à Plannar appliqué sur ceux-ci. On obtient alors les deux bords de chaque encoche.
      • On relie les deux bords avec Loft après avoir réorganisé leurs arbres de données avec Shift Paths suivi de Flip Matrix. On ontient les lignes complètes des encoches que l'on écrase dans une liste (flatten).
      • Avec Dispatch on sépare chacune des deux listes d'encoches (puisqu'il y a deux encoches par cercle).
      • On coupe les cercles avec la première liste (output A) à l'aide Surface Split. On Dispatch les résultats et on passe l'output A en mode flatten, il contient les cercles évidés d'une première encoche.
      • On coupe ce résultats avec la deuxième liste d'encoches (output B) avec un autre Surface Split, puis on Dispatch à nouveau le résultat en passant l'output A en mode flatten. Il contient la collection des cercles évidés par deux encoches. On place ce résultat dans une collection Surface.

    Ci-dessous le logigramme de la réalisation de la lampe et la vue du résultat final (cliquez pour voir en grand) : 

     

     

    Il reste encore à préparer les planches 2D prêtes à être envoyées à la découpe laser. Il ne faut pas oublier de numéroter les faces sur les planches et sur la 3D afin de pouvoir reconstruire la géode.

    Je ne détaille ici que la réalisation de la planche des facettes, pour celles des cercles-joints, il suffit de l'adapter. 

    Dans Grasshopper, voici les étapes qui mènent à l'obtention des planches 2D pour la découpe laser :

    • Préparation :
      • Placer la collection de surfaces dans un opérateur Surface et écraser l'arbre (Flatten en input)
      • Extraire des listes de Sommets, Faces et Arrêtes des surfaces en les connectant à un Brep Components
      • On réorganise les arrêtes (Edges) avec Flip Matrix
      • Récupérer la collection des lignes des encoches et lui appliquer un Shift Paths puis un Flip Matrix pour réorganiser les données
      • Récupérer également la collections des lignes de la rainure qui permet d'orienter les faces et lui appliquer un Shift Paths 
    • Création d'une grille de projection :
      • On récupère comme déjà fait précédemment la collection des points des centres des faces.
      • On trace une ligne (Line) entre les points ainsi obtenus (en mode Graft) et les Vertices des facettes puis on mesure ces lignes avec Length (input flatten)
      • En les triant via un Sort (input en mode flatten), puis en inversant la liste avec Reverse List et enfin en sélectionnant le premier Item (List Item avec 0 en index), nous obtenons la plus grande distance séparant le périmètre d'une facette à son centre. Cela représente donc la moitié du gabarit de la plus grande facette.
      • Après une Multiplication par un facteur 2.25 (on obtient un résultat un peu plus grand que le diamètre apparent de la plus grande face), on obtient la valeur de la trame de la grille. On est ainsi sûr que deux facettes projetées sur la grille ne se chevaucheront pas.
      • Il ne reste plus qu'à créer la grille de projection : Square. Pour les inputs, on prend un Plane XY comme plan de projection, la valeur de trame obtenue précédemment dans Size, on prend 4-1=3 pour le nombre de cellules en X (Extent X) et on applique un List Length sur le nombre de faces (input en mode flatten) que l'on divise par 4 et on soustrait 1 (Substraction) pour obtenir le nombre de cellules en Y (Extent Y). 
        Nb. : le nombre de colonne choisi ici (4 car le nombre de faces est divisible par 4) peut être adapté.
    • Projection sur la grille :
      • Tout d'abord, on oriente toute les facettes dans le plan XY : via Orient, on place les arrêtes des faces ainsi que les encoches et les rainures dans l'input Geometry, puis on récupère leurs Initial Plane grâce à un composant Plane Fit, les Vertices des facettes en input (aplatir les plans en outpout avec Flatten). Enfin, le Final Plane est un simple Plane XY.
      • Toutes les facettes s'alignent alors sur le plan XY et sont centrées (quasiment) sur l'origine. L'origine (un Point XYZ avec 0 dans les input) sera donc le point de départ de la projection.
      • On crée les vecteurs (Vector 2Pt) entre cette origine (input A) et les points de la grille (input B)
      • Enfin Move avec les facettes en input Geometry et les vecteurs ainsi créés en input Motion permet de projeter toutes les facettes sur les intersections de la grille.
    • Mise en place du texte :
      • On applique List Lenght sur les facettes, cela permet d'obtenir le nombre de facettes
      • On le rentre dans l'input Count d'une Series. On obtient une série d'entiers de 1 au nombre de facettes. On le rentre dans un Integer afin d'enlever la virgule dans le texte.
      • Un Number Slider permet de régler la hauteur du texte.
      • Enfin, il suffit de créer deux Text Tag 3D dans lesquels on rentre les entiers de 1 au nombre de facettes dans l'input Text, le Number Slider "taille du texte" dans l'input Size. Pour l'input Location, on rentre les centres des facettes initiales dans le premier Text Tag 3D et le centre des facettes projetées dans le second.

    Ci-dessous le logigramme de la mise en page sur planches pour découpe laser et la vue du résultat final (cliquez pour voir en grand) :

      

     

     La réalisation est en cours mais un premier test montre que la technique utilisée fonctionne :

    Dôme géodésique - Lampe "design"

     Ci-dessous la version complète de la définition Grasshopper. Je vous remercie de respecter l'auteur et de me contacter si vous voulez en faire une utilisation sur tout support que ce soit. 

       Projet Géode - Parametric Lab.gh

     


    Tags Tags : , , , , ,
  • Commentaires

    Aucun commentaire pour le moment

    Suivre le flux RSS des commentaires


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :