Répartition d'éléments sur une sphère - Page 2 — Les-mathematiques.net The most powerful custom community solution in the world

Répartition d'éléments sur une sphère

2»

Réponses

  • C'était pour rigoler Jacquot, ils sont super-jolis, tes petits carrés, on dirait des bouts de tomate et j'adore la tomate... sur la pizza et là, ça semble mieux au niveau densité sur le bord.

    Bon, surtout, qu'une légère vexation ne vous détourne pas de l'objectif, feu d'artifice généralisé et équiréparti sur planète totale pour le 31 décembre 2014 dernier carat, je dois fêter un truc.

    Bon après-midi,
    Denise
  • J'ai choisi au hasard $m=500$ points sur la sphère et j'ai jeté ceux qui avaient un voisin à moins de $k=\arccos(7.5°)$ d'écart angulaire. On peut varier $m$ et $k$.
    Les points bleu-clair sont à l'arrière.37747
    37749
  • Pour une structure régulière, je choisirais les sommets, le centre des faces ou le milieu des arêtes d'un polyèdre archimédien

    http://www.mathcurve.com/polyedres/archimedien/archimedien.shtml

    Ensuite tu déplaces chaque point d'un petit arc.
    Cordialement
  • Bonjour jacquot,

    Quel navigateur utilises-tu ? Je sais que Codeskulptor peut planter sous IE.
  • Ah ben oui, merci Philippe.
  • La méthode prônée par GaBuZoMeu : on voit nettement moins les triangles de l'icosaèdre comme prévisible, par contre, le nombre de points croît exponentiellement.

    Merci à Philippe Malot pour le réglage de l'affichage des images. J'espère ne pas dépasser sur ce coup-là... :-D37755
  • Allez, je n'ai pas pu résister même si scilab n'est pas là pour rigoler (ni vraiment fait pour ça) : que la fête commence ! :-D37761
  • Pardonnez-moi de jouer les prolongations:
    j'ai été interloqué par les deux premiers messages de Siméon : je comprenais bien que des choix de vecteurs de coordonnées aléatoires suivant une loi uniforme donneraient une distribution non isotrope, la diagonale du cube étant plus longue que son arête.
    Mais pourquoi le tirage des coordonnées suivant la loi normale donne-t-il une bonne équirépartition des directions des vecteurs ?

    Ce questionnement m'a conduit vers l'article de Wikipédia relatif au calcul de l'intégrale de Gauss et aussi vers ce document : tirages aléatoires uniformes et gaussien qui m'ont permis de comprendre enfin comment il se fait que $\pi$ apparaît dans l'expression de la loi normale.

    C'est, en quelque sorte par Pythagore : $e^{-x^2}\times e^{-y^2}\times e^{-z^2} = e^{-(x^2+y^2+z^2)}$
  • À prolongation, prolongation et demie. La question se pose pour la répartition des alvéoles sur les balles de golf. Voici quelques liens : pourquoi 432 alvéoles ?, comment placer N points “régulièrement” sur une sphère ?, brevet de balles de golf, codes icosaédraux, etc.
  • Bonjour,

    Une spéciale dédicace à Jacquot : trouvée à l'instant, visionnée, mais restée incomprise : où il est question de la puissance suggestive de la pizza...
    Comment un photon voit l'univers

    Denise
  • Merci Denise, pour cette délicate attention matinale.
    Je regarderai encore cette video, mais sans le son, ce sera mois fatigant !:-S
    Bonnes fêtes.
    jacquot
  • Bonjour Jacquot,

    Bonne fête également, ainsi qu'à tous.
    Non, vraiment, il faut que tu attendes d'être dans un endroit équipé dignement, informatiquement parlant : sans le son, cette vidéo-là, c'est même pas la peine...
    J-5 pour le feu d'artifice équitablement réparti sur la sphère, vivement !

    Denise
  • Re bonjour à la communauté et meilleurs vœux à tous.
    Je progresse à petits pas sur mon projet. J'en suis toujours à explorer la piste Lambert, que je me suis amusé à "spiraler" après avoir découvert les liens proposés par Jer.
    Tout ceci pour dire à Denise qu'il ne faut pas compter sur un feu d'artifice a brève échéance, le 14 juillet (2015?) me semble plus réaliste ;-)
    version Lambert en spirale

    Si je repasse par là, c'est parce que je me suis vite aperçu que j'allais avoir besoin de faire tourner ma sphère dans l'espace, une fois mes calculs réalisés, pour éviter un effet répétitif des effets parasites comme les couronnes apparaissant avec la méthode Lambert. Sauf que je m'y perd un peu, et si quelqu'un voulait bien me transcrire une formule dans mon petit vocabulaire, cela m'éviterais d'acheter une nouvelle boîte d'aspirine.

    Voici ce que je conçois :
    – à la fin de mes calculs de distribution, j'ai une liste de vecteurs (x,y,z), de longueur 1, que je voudrais faire pivoter dans l'espace.
    – pour cela, je crois que je dois choisir 2 angles : a1 et a2, (en radians ? donc entre 0 et 2*PI)
    – mais ensuite ? mes recherches m'emmènent vers des choses comme ceci auxquelles je ne comprends vraiment rien. Pardonnez-moi…

    Y a t'il une formule exprimable de cette façon :
    x2 = x * (sin(angle1)) + y (cos(angle2)) + z * (truc_en_us(?))
    y2 = y * (sin(angle1)) + z (cos(angle2)) + x * (truc_en_us(?))
    z2 = z * (sin(angle1)) + x (cos(angle2)) + y * (truc_en_us(?))

    (ne cherchez pas une valeur scientifique à cette formule, c'est juste une projection imaginaire pour vous montrer comment je réfléchis et de quel vocabulaire je dispose)

    Merci de votre compréhension.
  • Bonjour Dldler,
    Je suis vraiment contente d'avoir de vos nouvelles : j'étais très curieuse de savoir où vous en étiez mais ne voulais pas vous mettre la pression. "Aux âmes bien nées, la valeur n'attend point le nombre des années", l'essentiel est de savoir que vous n'avez pas abandonné et que vous consacrez à cela un peu de votre temps. Je suis désolée de ne pas trop pouvoir vous aider mais suis persuadée que vous allez trouver plein d'experts ici qui vont vous fournir les données qui vous manquent vite fait.
    Au 14/7 donc (2 en fait !).
    Denise
  • Bonjour Didier,
    Pour les rotations en 3D et d'une façon générale les transformations affines, j'évite autant que possible de calculer des angles, ne serait-ce que pour des questions de performance.
    La formule que vous avez écrite est naturellement la formule utilisée, mais je ne cherche pas à connaitre les angles. Elle s'écrit dans le cas général
    X=TX + XX.x + XY.y + XZ.z
    Y=TY + YX.x + YY.y + YZ.z
    Z=TZ + ZX.x + ZY.y + ZZ.z
    TX, TY, TZ représentent la translation, nulle dans votre cas
    Il y a donc 9 paramètres à calculer, c'est à dire qu'il faut connaitre 3 point dans le système de départ et dans le système d'arrivée.
    Il faut tout de même garder en tête que cette transformation contient une affinité, c'est à dire une déformation. Etant donné que les calculs sont faits avec un nombre fini de chiffres significatifs, il faut éviter de cumuler ces déformations, sinon, votre sphère risque de se reprouver avec une forme de patatoïde. La solution pour éviter cela est d'utiliser 4 points, on a ainsi une translation non nulle.
    Vous pouvez aussi aller jetter un coup d'oeil du côté des angles d'Euler.
  • Bonjour Dlzlogic et merci pour ta participation.
    J'avoue humblement que je n'ai rien compris, et pourtant ça ressemble bien à ce que je cherche (en tous cas, ça me parle beaucoup plus que ce que vous appeler matrices, je crois)
    Que sont XX, XY et XZ ? Pourquoi associés avec des .x .y et .z ?
    Je reste dans le flou…

    De mon côté, je tente ma méthode préférée : décomposer les problèmes qui me dépassent en plus petits problèmes que je peux maîtriser…
    J'en suis la :

    Je pose mon énoncé et mon vocabulaire :
    – je connais un point/vecteur que je nomme v1, de coordonnées (x1,y1,z1) et de longueur 1;
    – j’applique une rotation d’un angle a1 sur l’axe des z
    – et une rotation d’un angle a2 sur l’axe des x
    – je cherche le résultat, que je nomme v2, de coordonnées (x2,y2,z2)

    Ma démarche :
    je récupère d’abord les coordonnées polaires(?) de v1 :
    je vois ça comme deux angles : méridien et parallèle , je les appelle donc m1 et p1.

    Je pense (grâce à cet article que j'arrive à comprendre à peu près, en fait) que :
    m1 = arctan(y1/x1)
    p1 = arccos(z)

    Ensuite, je ne suis pas sûr de la correspondance avec mes axes x et z, mais j’ai l’intuition que ça ne doit pas avoir d’influence si je modifie le repère orthonormé, puisque je cherche a faire de l’aléatoire et pas des sciences pures ? Aussi, j’ai bien envie de tenter d’ajouter bêtement les angles…
    m2 = m1 + a1
    p2 = p1 + a2

    Et enfin, je retraduis en coordonnées cartésiennes avec :
    x2 = sin(p2) * cos(m2)
    y2 = sin(p2) * sin(m2)
    z2 = cos (p2)

    Est-ce que ma démarche vous semble logique ?
  • La répartition des points servant à donner des vitesses initiales aux étincelles*, elle n'a pas probablement besoin d'être tournée dans l'espace. Dans l'exemple que j'ai fait plus haut, j'ai pris je ne sais plus quelle distribution régulière, sans doute celle à base d'icosaèdre, toujours la même, et j'ai ajouté un petit bruit uniforme. Ce qui change à la fois un peu la direction dans l'espace et la vitesse initiale en norme. Bien malin qui verrait une quelconque régularité dans plusieurs tirages successifs...

    * Edit : en tout cas, c'est comme ça que j'ai compris la chose.
  • Je découvre votre fil avec admiration! Sur ton animation remarque, on voit même l'icosaèdre comme dans les vieux livres. D'ailleurs, Je ne comprends pas pourquoi on voit le dessins comme dans les vieux livres: un triangle plus foncé que l'autre. Enfin c'est très beau, merci. Mais du coup sur le feu d'articifice on pourrait voir apparaître un icosaèdre. Un feu d'artifice quasi-mystique, j'aimerais bien voir ça.

    M.
    PS: En voyant toutes ces animations. Je me demande bien ce qu'il se passerait pour un groupe engendré par trois réflexions hyperplanes génériques? ou trois rotations génériques? Ca devrait être beaucoup plus uniforme. Et si on prend d'autre sous-groupes discret connus, mais pas finis?
  • Bonsoir à tous,

    Dldler : Mais c'est que c'est déjà franchement joli ce que tu nous as concocté, vraiment ! Merci !

    C'est marrant comme, lorsqu'on se fait une image en tête au sujet de quelque chose qui nous est dit, l'image qui est dans notre tête peut ne pas correspondre à l'image que la personne qui nous parle a quant à elle dans la tête : pour moi, ton ambition était immense en ce sens que je croyais que tu voulais lancer les différents pétards depuis des points de la sphère équitablement répartis et qu'ensuite, dans le ciel à différentes hauteurs, les pétards éclataient en une seule explosion chacun ; un peu comme si, simultanément, depuis les villes de la Terre Tokyo, Dakar, New York, Lomé, Paris, Alger, Zurich, étaient tirés un pétard en chaque endroit avec éclatement en multi-points (à la même hauteur ou pas) au zénith des villes en question.

    Tu peux vraiment arrêter là t les félicitations sont méritées parce que l'idée que j'avais devrait donner un machin tout fouillis à côté de ce que je vois là qui est vraiment chouette.

    Bravo.

    Denise
  • @Didier : le même icosaèdre de base, pas de rotation, un peu hasard surajouté pour chaque fusée (animation à cliquer) :38483
  • Bonjour Dldler,
    C'est sympa de nous tenir au courant de l'avancement de ton projet..
    J'ai cliqué sur ton lien et fait joujou avec les curseurs. Ton "Lambert spiralé" est très joli, l'inconvénient est que les pôles apparaissent comme des points privilégiés.
    C'est sans doute pour cette raison que tu veux faire tourner ta sphère entre deux lancements de fusée.
    Tes formules de rotation sont correctes.

    Comme remarque, j'ai une préférence pour les répartitions brouillées, il appelle ça le bruit, pour toi, c'est la dispersion.
    Si ce brouillage est important, il n'est plus nécessaire de faire des rotations entre deux lancers.
    Mais si tu veux qu'une structure reste visible, c'est un choix esthétique qui t'appartient.
    Et je te fais confiance pour le resultat !
  • Merci jacquot pour la confirmation des formules et tu as parfaitement compris l'intérêt de faire tourner la sphère : garder une structure qui reste visible et donc la faire pivoter pour éviter une répétition visuelle de ces "points privilégiés"

    C'est vrai qu'à force de tests, mes intentions évoluent et que je me suis un peu écarté de ma question d'origine. Je ne cherche plus à faire une répartition équilibrée (même si j'en garderai pour certaines fusées) mais à rendre visible une structure 3D. Je trouve que c'et un bon équilibre entre l'esthétique et l'illusion du volume. Dans ce sens, le "bruit" devient un effet esthétique, pas un brouillage pour cacher les défauts.

    Il me reste encore beaucoup de pistes à explorer : isocaèdre, cube, tétraèdre, "berlingot" et sans doute des variantes autour du cylindre, pourquoi pas. Donc vous aurez de mes nouvelles de temps en temps promis, et je vais essayer de faire un dossier récapitulatif de toutes mes recherches.

    @ Denise : un feu d'artifice autour du globe terrestre ? Idée bizarre, mais intéressante. Dans le même ordre d'idée, quand j'en aurai finis avec mes répartitions, je compte travailler sur des fusées complexes, à plusieurs niveaux : un lanceur pour faire monter la fusée, une première explosion qui projette de nouveaux lanceurs qui exploseront à leur tout plus tard. Ça devrait te plaire ;-)

    Et merci aux autres également, je suis attentif à tout ce que vous dites et j'y pioche des idées et des méthodes. Ça me permet aussi de redéfinir mes objectifs pour avoir l'esprit bien clair.
  • @Didier. Bon, je maintiens qu'il est inutile de faire des rotations pour obtenir un effet visuel satisfaisant dans le cas d'une fusée sans structure apparente. Le pseudo-hasard suffit. Néanmoins, si tu tiens à faire des rotations pour faire des fusées où il y a une structure apparente, il ne faut pas utiliser les angles d'Euler qui ont tout un tas d'inconvénients. La représentation le plus employée en informatique graphique pour les rotations de l'espace utilise les quaternions de norme 1.* Tu me diras, encore une terrrrible bête mathématique. Certes, mais là, c'est comme ça, il n'y a pas de solution simpliste. Je me rappelle être tombé au hasard du Web sur un site pas mal fait où un type explique comment implémenter un certain nombre de trucs mathématiques de ce genre en javascript (quaternions, schémas numériques pour les ode, ...). Tu devrais pouvoir le retrouver assez facilement. Un premier lien.

    * Edit : si je comprends bien, c'est pour pouvoir représenter des familles continues de rotations, comme celles associées au mouvement d'un solide dans l'espace. Si ton but est de tirer des rotations au hasard sans lien les unes avec les autres, les angles d'Euler peuvent peut-être suffire, il y a également une autre formule à base de produits vectoriels et de produits scalaires que je ne retrouve plus mais qui est très simple.
  • @remarque : tu as raison, la rotation est inutile sans structure apparente.

    Pour les rotations, je veux juste une rotation (qui sera aléatoire par la suite) à la création des vecteurs.
    Je ne veux pas répéter cette rotation pour faire tourner la sphère pendant l'explosion.

    Pour les quaternions, j'ai vraiment essayé de comprendre, mais je ne vois pas le bout du début de comment ça marche.
    Dans un des cours proposés sur la page wiki, j'ai même l'impression que des "versors" seraient suffisants puisque je ne change jamais la longueur de mes vecteurs ? C'est tout ce que j'ai compris. Bref, je crois que je vais abandonné cette piste.
    Pour les produits vectoriels, ce sont les grandes accolades avec un tableau dedans… et il me manque la pierre de Rosette pour comprendre comment ça marche.

    Enfin, pour la formule que je voulais essayer, elle semble ne pas marcher.
    Un seul des axes de rotation fonctionne, l'autre crée des aberrations… Je vais retourner plancher quand même de ce côté. Si je trouve laquelle des 2 rotations est bonne, je pourrai peut être enchaîner 2 transformations en échangeant les axes plutôt que de tenter les 2 rotations en même temps… (mais au passage, ça m'a fait découvrir de jolies formes)
  • @ Didier, je n'ai pas le temps maintenant, mais je reviendrai là-dessus ce soir ou demain, à moins que quelqu'un d'autre ne soit passé avant.
  • Pour les coordonnées sphériques,
    m1 longitude m1= arctan y1/x1 (à pi près)
    p1 lattitude p1= arcsin z1
    m2 étant ta nouvelle longitude et p2 la nouvelle latitude, essaye les formules suivantes :
    x2= cos(m2) cos(p2)
    y2 = sin(m2) cos (p2)
    z2 = sin(p2)
  • @ remarque : OK, merci. Je n'ai pas de souci de délais, ne vois pas ça comme une urgence. En plus, ça me permet me creuser la cervelle pendant ce temps là et c'est ce qui me plait.

    J'ai réussi en procédant en 2 étapes à paramétrer la rotation de la sphère. La mise à jour est ici

    Si d'autres venaient ) être intéressé (ou si quelqu'un voyait comment simplifier…), je vous donne la progression que j'ai suivi :

    Je pose mon énoncé et mon vocabulaire :
    – je connais un point/vecteur que je nomme v1, de coordonnées (x1,y1,z1) et de longueur 1;
    – j’applique une rotation d’un angle a1 sur l’axe des z
    – et une rotation d’un angle a2 sur l’axe des x
    – je cherche le résultat, que je nomme v2, de coordonnées (x2,y2,z2)

    Ma démarche :
    je récupère d’abord les coordonnées polaires(?) de v1 :
    je vois ça comme deux angles : méridien et parallèle , je les appelle donc m1 et p1.

    m1 = arctan(y1/x1)
    p1 = arccos(z1)

    j'applique la première rotation sur l'angle p (si on le fait sur l'angle m, on obtient des aberrations)
    p' = p1 + a1

    Je retraduis en coordonnées cartésiennes avec :
    x' = sin(p') * cos(m')
    y' = sin(p') * sin(m')
    z' = cos (p')

    Dans un deuxième temps, je reproduis la même démarche, mais en interchangeant les coordonnées x et z, ce qui donne :
    m2 = arctan(y'/z')
    p'' = arccos(x')
    p2 = p'' + a2

    z2 = sin(p2) * cos(m2)
    y2 = sin(p2) * sin(m2)
    x2 = cos (p2)
  • @ jacquet : ça ne fonctionne pas. Par contre j'obtiens une sorte d'escargot (hélicoïde ?) en dehors de la sphère.
  • Je pense que tes aberrations proviennent du fait que ta longitude est définie à pi, près.
    Il vaudra mieux faire un calcul matriciel:
    rotation d'angle a1 autour de l'axe des z
    x' = x.cos (a1) - y.sin(a1)
    y' = x.sin(a1) + y.cos(a1)
    z' = z
    puis rotation d'angle a2 atour de l'axe des x
    x" = x'
    y" = y'.cos(a2) - z'.sin(a2)
    z" = y'.sin (a2)+ z'.cos(a2)

    Essaye de voir du côté de "Matrice d'une rotation" pour comprendre comment ça fonctionne.
    En espérant que ça marche cette fois !
    Amicalement. jacquot
  • Juste une toute petite question :
    x.cos (a1)

    ça veut dire
    x multiplié par cos(a1)

    ?

    (désolé si ça vous parait évident…)
  • Rahhhh… ça va éclaircir beaucoup de trucs que je trouve sur le net…
    Grand merci.
    :-)
  • Un autre grand merci, jacquot, ça marche parfaitement.
    En plus, je comprends ce que je fait, et j'ai transposé pour une rotation sur les axes x et y qui correspondent mieux à ma vue.
    Cette version est également plus rapide pour le processeur puisque je peux stocker le calcul des sin et cos afin de m'en resservir pour chaque particule.

    Version adopté.
  • (tu) Super, si tu pouvais juste corriger l'orthographe de "Dispersion. ;-)


    PS je viens juste de découvrir les curseurs sur les axes pour faire les rotations...
  • @ Didier,
    Oui, c'est vraiment bien.
    Je suis sûr que Denise aimera aussi.
  • @ Didier : la formule dont je ne me rappelais pas peut en fait être directement recopiée depuis wikipedia.

    $$R = P +\cos\theta(I-P) + \sin\theta Q = I + \sin\theta Q + (1-\cos\theta)Q^2$$


    $$P = \begin{pmatrix}
    u_x^2 & u_x u_y & u_x u_z \\
    u_x u_y & u_y^2 & u_y u_z \\
    u_x u_z & u_y u_z & u_z^2
    \end{pmatrix} = uu^t,\qquad I = \begin{pmatrix}
    1 & 0 & 0 \\
    0 & 1 & 0 \\
    0 & 0 & 1
    \end{pmatrix},\qquad Q = \begin{pmatrix}
    0 & -u_z & u_y \\
    u_z & 0 & -u_x \\
    -u_y & u_x & 0
    \end{pmatrix}
    $$
    $I$ est la matrice identité $3 \times 3$. La matrice $Q$ est la représentation antisymétrique de $u$, correspondant à l'application linéaire $ v\mapsto u\wedge v$ (où $\wedge$ est le produit vectoriel). La matrice $P=I+Q^2$ est la projection sur l'axe de rotation et $I-P=-Q^2$ est la projection sur le plan orthogonal à l'axe dirigé par $u$.

    J'ajoute que $u$ est un vecteur unitaire donnant l'axe de rotation et $\theta$ est l'angle de la rotation (bon il y a des histoires d'orientation, laissons cela de côté). On peut utiliser cette formule pour tirer des rotations au hasard de façon uniforme par rapport à l'axe et à l'angle.
  • Tu sais, Remarque, la formule donnée par Jacquot fait exactement la même chose. Il ne s'agit de toute façon que de multiplications et d'additions, alors, autant comprendre la formule qu'on utilise, même si elle est décrite en deux fois trois lignes.
    Dans le cas présent, il s'agit de calcul numérique et non de mathématiques fondamentales.
  • Sans blagues ! (:D(:D(:D

    Bon, enfin bref... peu importe.
  • @Didier : je n'avais pas trop envie de faire des feux d'artifice hier, ce n'est pas beaucoup mieux aujourd'hui, mais enfin... Donc apparemment, tu utilises seulement deux angles pour faire tes rotations. Or les rotations en dimension 3 forment un objet de dimension 3 : en gros, on a besoin de 3 scalaires pour déterminer une rotation dans l'espace (cf. le compas monté sur cardan que je joins plus bas). Ainsi, il y a trois angles d'Euler, etc. Avec deux angles seulement, tu ne parcours qu'une partie infime de l'ensemble des rotations. Ce n'est peut-être pas trop grave du point de vue visuel, mais il faut le savoir.

    Je poste ci-dessous un feu d'artifice où les rotations ont été calculées avec la formule que j'ai indiquée plus haut, avec un axe au hasard et un angle au hasard. Les premières fusées ont la symétrie de l'octaèdre non perturbée aléatoirement, les suivantes celle de l'icosaèdre et j'ai fini avec un peu de symétrie diédrale, on peut bien sûr continuer avec d'autres distributions de points.38507
    38509
  • Bonsoir,

    Ce post pour vous dire une toute petite chose, Dldler, au cas où vous en ayez besoin : j'ai regardé votre fichier joint il y a quelques temps déjà (spheres.pdf) dans lequel les dessins sont explicites. Je pense que vous aurez rectifié de vous-même le nombre de points d'intersection des parallèles et méridiens, il vaut 2ml+2 (vous l'avez appelé p) : imaginez les points des pôles partant à l'infini, cela coupe chaque méridien en 2 "bouts de méridiens" diamétralement opposés sur le cylindre obtenu par le "départ à l'infini des pôles" ! Chaque méridien coupant chaque parallèle en 2 points, ça donne le 2ml et le +2 est l'"ajout des pôles".

    @+
    Denise
  • Re bonjour à la communauté.

    Je dois d'abord vous dire que j'adore cet exercice. Il est à la limite de mes capacités, et j'adore ça.

    Pour revenir un peu en arrière et répondre :
    @ Denise : oui, je savais que les méridiens font tout le tour de la terre. J'ai choisit d'utiliser le mot quand même, mais en n'utilisant que des demis méridiens, qui me permettent des découpages en nombres impairs de secteurs, c'est donc un abus de langage de ma part.

    @dlzlogic :-) Merci, je suis très reconnaissant envers ceux qui veulent bien "descendre" à mon niveau. Cela ne m'empêche pas d'avoir énormément de respect pour ceux qui maitrisent et peuvent énoncer les choses de façon plus "compact". Je comprends bien qu'à partir d'un certain niveau c'est nécessaire, et même qu'ensuite il est difficile de comprendre ce que cela peut avoir d'ésothérique.

    @remarque : tu m'as fait souffrir avec cette idée des 3 rotations, mais mon côté maso te remercie :-D.
    J'ai eu du mal à comprendre l'idée, puis elle a pris place en douceur dans ma comprenoote de cette façon :
    — en fait, il n'y a besoin que de 2 rotations (maximum) pour déplacer un point A vers un emplacement quelconque B
    — mais cela ne donne qu'une seule position de la sphère où le point A est à l'emplacement B , alors que toutes les rotations de la sphère autour de l'axe OB sont également possibles.


    Pour mon projet :
    — après avoir imlémenté, avec un peu de mal, la triple rotation, j'ai nettoyé mon code et travaillé pour avoir un outil évolutif. Pendant cette période, j'ai beaucoup joué avec l'inverse de la projection de Lambert, sans doute parce que je la comprends bien et que je peut jouer plus facilement sur la grille (en 2 D) que directement dans l'espace en 3D. J'y ai trouvé plein de choses intéressantes.
    — j'ai ajouté une pseudo perspective
    — ainsi qu'un mécanisme de remplissage triangulaire
    — le reste était plus facile : retrouver les points des solides concernés et les regrouper en triangles
    — j'ai juste abandonné le dodécèdre, car je me suis perdu deux fois dans le découpage en faces triangulaires. Comme je ne pense pas que le manque de cette figure se fasse sentir, j'ai renoncé*.

    Voilà ce que cela donne pour l'instant : petit outil interactif

    Je vais maintenant tenter de réaliser la version telle que je l'ai imaginée dans mon premier post. Ce n'est pas sûr que j'y parvienne, mais je suis curieux de voir comment le principe se comporte dans la réalité. Après cette étape, je vous ferai un beau compte rendu final pour vous remercier de m'avoir accompagné. Ça ne vous apprendra sans doute pas grand chose, mais si un autre hurluberlu venait à chercher des infos sur le sujet, ça pourrait peut-être lui simplifier la tache, et le diriger vers une communauté sympathique. Encore merci à vous (évidemment, je reviendrai aussi une dernière fois quand j'aurai tout implémenté dans un joli feu d'artifice interactif pour vous montrer ça).



    ————————————————————————
    *Maintenant, si quelqu'un en avait besoin, il me manque juste la liste des pentagones en fonctions de mes points pour m'en sortir. Si quelqu'un l'a dans ses cartons, où s'il a la capacité d'abstraction pour le visualiser, je mettrais à jour la forme dans mon outil avec plaisir.
    Pour infos, voici ma liste de points :

    A : (0,ron,nor)
    B : (0,ron,-nor)
    C : (0,-ron,nor)
    D : (0,-ron,-nor)

    E : (nor,0,ron)
    F : (nor,0,-ron)
    G : (-nor,0,ron)
    H : (-nor,0,-ron)

    I : (ron,nor,0)
    J : (ron,-nor,0)
    K : (-ron,nor,0)
    L : (-ron,-nor,0)

    M : (-1,1,-1)
    N : (-1,1,1)
    O : (-1,1,-1)
    P : (-1,1,1)
    Q : (1,-1,-1)
    R : (1,-1,1)
    S : (1,1,-1)
    T : (1,1,1)

    nor est le nombre d'or : (1+ racine de 5)/2
    et ron son inverse : 1/nor
  • Bonjour Didier,

    D'abord (tu) pour les rotations à trois angles.

    Je n'ai pas bien compris tes animations non sphériques avec les points situés apparemment sur un cube ou sur un dodécaèdre ? Pour un vrai feu d'artifice physique, ce n'est pas possible a priori.
  • Bonjour remarque,
    Pour les volumes, j'ai mis un curseur normalisation qui permet de ramener les grilles des faces vers la surface de la sphère. J'ai laissé la valeur a zéro pour bien voir la structure de base, mais c'est sur que dans le feu d'artifice, cette valeur sera à 1 (ou très proche) à moins de mettre une dispersion importante sur le rayon
  • Ç'ui-là m'a l'air pas mal :39095
  • @ Didier : d'accord pour le curseur, je n'avais compris ce qu'il faisait.

    En termes de rotation, ce serait marrant si les curseurs de rotation restaient actifs durant le tir.

    Pour l'icosaèdre*, je n'ai pas très bien compris ce qui te manque, je mets du vieux code scilab si ça peut t'aider.
    phi=(1+sqrt(5))/2
    
    function y=subdivise(M) // subdivise un triangle en 4
        a=M(:,1)
        b=M(:,2)
        c=M(:,3)
        t1=[a,(a+b)/2,(a+c)/2]
        t2=[b,(a+b)/2,(b+c)/2]
        t3=[c,(a+c)/2,(b+c)/2]
        t4=[(b+c)/2,(a+b)/2,(a+c)/2]
        y=[t1,t2,t3,t4]
    endfunction
    
    function y=subdivisetout(M) // subdivise une liste de triangles
        [p,q]=size(M)
        y=[]
        for j=1:q/3
            m=M(:,1+3*(j-1):3*j)
            y=[y,subdivise(m)]
        end
    endfunction
    
    function y=sphere(x) // projection sur la sphère
        n=[1;1;1]*sqrt(sum(x.*x,'r'))
        y=x./n
    endfunction
    
    
    S1=[0,phi,1;0,-phi,1;0,phi,-1;0,-phi,-1]
    S2=[1,0,phi;-1,0,phi;1,0,-phi;-1,0,-phi]
    S3=[phi,1,0;phi,-1,0;-phi,1,0;-phi,-1,0]
    S=[S1;S2;S3]' // sommets de l'icosaèdre initial
    
    M0=[] // liste des triangles initiaux : on teste les paires de sommets à distance = 2
    for l=1:10
        C1=S(:,l)
         for i=l+1:11
             if norm(C1-S(:,i))<=2.1
                 C2=S(:,i)
                 for j=i+1:12
                     if norm(C2-S(:,j))<=2.1&norm(C1-S(:,j))<=2.1
                         C3=S(:,j)
                         M0=[M0,[C1,C2,C3]]  
                     end
                 end
             end
         end
    end
    
    M0=M0/(sqrt(1+phi^2)) // il faut ramener tout ça sur la sphère unité
    y=M0 // y va contenir les vitesses initiales
    
    if K>0 then
        for k=1:K
        y=sphere(subdivisetout(y))
        end
    end
    
    //elimination des doublons : la subdivision aveugle duplique certains sommets des arêtes, pas bon en cas de bruit ajouté ensuite
    test=1
    rang=1
    while test>0
        [p,q]=size(y)
        if rang==q+1 then
            test=0
        else
            reste=y(:,rang+1:$)
            [m,n]=size(reste)
            D=reste-y(:,rang)*ones(1:n)
            D=sum(D.*D,'r')
            bon=find(D>0)
            y=[y(:,1:rang),reste(:,bon)]
            rang=rang+1
        end
    end
    

    * Ah en fait, je suis hors sujet puisque tu parles de dodécaèdre...
  • A la réflexion, pour trouver les faces du dodécaèdre, le plus simple est probablement de faire deux ou trois projections bien choisies de tes points sur des plans et de compter à la main. Malheureusement, je n'ai pas de logiciel sous la main qui permette de placer des étiquettes en 3d. Peut-être Geogebra le fait, je n'ai pas essayé. Donc ça peut se dessiner à la main au pire. Beaucoup de mains dans ce message.

    Edit : oui, très facile avec Geogebra 5, mais là c'est un peu tard.
  • @ Didier : j'ai corrigé tes points O=(-1,-1,1) et P=(-1,-1,-1) qui n'étaient pas corrects, et avec cet étiquetage, on obtient les faces

    ACOGN
    ACRET
    ATIKN
    CRJLO
    OLPHG
    GHMKN
    REFQJ
    ETISF
    KISBM
    SBDQF
    BMHPD
    DQJLP
  • Un grand merci Remarque.
    Je passe ça dès que j'ai un peu de temps.
  • Outil mis à jour :
    Même lien : petit outil interactif

    Changements :
    – Ajout du découpage en grilles triangulaires sur le dodécaèdre
    – Ajout de valeurs négatives pour la normalisation (permet de donner un effet convexe aux faces, ce qui redonne un peu d'intérêt aux différents volumes)
    – Ajout de la méthode d'enroulement par le nombre d'or
    – Ajout de la méthode d'enroulement de E.B. Saff & A.B.J. Kuijlaars

    @remarque : c'était parfait, merci

    @tous :
    Les deux nouvelles méthodes, je les ai trouvés en suivant le fil de Jer Anonyme : "Comment placer N points régulièrement sur une sphère". En suivant les bons liens, je suis arrivé ici, en anglais mais l'écriture des formules convenait parfaitement à mon niveau. Le résultat est très convainquant et apporte la souplesse de choisir avec précision son nombre de points.

    Bon… Cette fois, je passe vraiment à ma prochaine étape et je vous laisse tranquille quelques temps :)
Connectez-vous ou Inscrivez-vous pour répondre.
Success message!