dimanche 2 juin 2013

Structure Synth - Flocon de Koch

J'ai décidé d'essayer de reproduire la structure du flocon de Koch dans Structure Synth.

C'est à dire, ceci :


( sourcehttp://fr.wikipedia.org/wiki/Flocon_de_Koch )

Voici la formule utilisée pour générer cette forme.
Je vais tenter de vous l'expliquer car il a fallu tenir compte, pour le placement, de certaines choses telles que le redimensionnement à chaque nouvelle itération.


{s 24} Koch

rule Koch md 7
{
   {x 2/3 s 1/3 x -1/9 y 1/5 rz 60 h 10} Koch 
   {fx x -4/3 s 1/3 y 1/5 x 2/9 rz 60 h 10 } Koch 
   {s 1/3 x -1/9 y 1/9 h 10} Koch
   {x 4/3 s 1/3 y 1/9 x -1/9 h 10} Koch
   LigneSpheres


rule LigneSpheres md 16

   MySphere 
   {x 1/8 h 1} LigneSpheres


rule MySphere

   {s 1/8 } sphere::shiny 
}


1. rule "Myshpere"
La première faite a été de préparer l'objet utilisé, dans notre cas : une sphère.
Je lui ai appliqué un redimensionnement de 1/8 car l'objet final peut vite devenir très grand et sortir des limites du zoom de Structure Synth. La taille finale sera choisie tout à la fin lorsqu'on fait appel à la règle finale "Koch".

2. rule "LigneSpheres"
Avec la sphère préparée précédemment, nous allons créer une "ligne".
Ayant une taille de 1/8, nous effectuons un déplacement en x de 1/8 et modifions sa teinte de 1.

3. rule "Koch"
La règle du flocon de Koch est assez simple.
Une ligne est divisée en 3.
Le tiers central est remplacé par un triangle équilatéral...
A chaque nouvelle itération, nous réappliquons cela à toutes les arrêtes...

Attention, à retenir : notre ligne est faite de 16 boules de taille 1/8.
Notre ligne a donc une taille totale de 2. Ceci est important pour la suite.

Dans ma règle, j'ai commencé par réaliser les deux arrêtes visibles du triangle équilatéral.

En première ligne, nous déplaçons notre ligne  de 2/3 en x. (donc, 2 car la ligne a une à une taille de 2, c'est à dire : 6/3. et 1/3 de 6/3 = 2).
Nous la redimensionnons ensuite de 1/3.
Et enfin, nous lui appliquons un nouveau déplacement en x de -1/9.
Pourquoi ? Car le pivot de l'objet utilisé pour le redimensionnement se trouve au centre de l'objet et non sur son bord.
Lorsque nous redimensionnons un objet et que nous voulons l'aligner avec son objet référent, il faut obligatoirement passer par une translation de l'objet.

Pourquoi faire deux translations en x et non une seule ? Car si il avait fallu la faire une seule fois, nous aurions eu un déplacement de 5/9 uniquement, beaucoup moins logique à expliquer ou à comprendre de prime abord.
Enfin, nous appliquons une translation vers le haut (y) de 1/5 avant d'effectuer une rotation de 60°.
Pourquoi effectuer la translation avant la rotation? Car le pivot et donc l'axe y subirait également une rotation, rendant impossible d'effectuer une translation par rapport au reste de la scène.
Pourquoi 1/5? Le problème du redimensionnement fait que les objets ne sont plus alignés et il faut donc trouver une valeur correcte et le plus proche de la valeur exacte afin que l'image soit réaliste. Il m'aura donc fallu passer par une phase de test et d'essais pour trouver la bonne valeur.

En deuxième ligne, j'ai commencé par "fx", une commande signifiant que l'on souhaite effectuer un "miroir" sur l'axe x de l'objet. Le pivot se retournant également, j'ai simplement repris les valeurs de la première ligne et les ai modifiées en fonction...

Les troisième ligne est la plus simple. Nous effectuons simplement un redimensionnement de 1/3 et la replaçons ensuite de -1/9 en x et 1/9 en y afin de la faire correspondre à la ligne de l'itération précédente.

Pour la quatrième ligne, nous effectuons comme pour la troisième mais réalisons d'abord une translation de 4/3 en x afin de placer notre nouvelle ligne.

La dernière ligne, "LigneSpheres", fait que notre ligne de sphères apparaisse à chaque étape de notre règle :)

Attention, un bug dans Structure Synth fait que si vous remplacez la sphère par des boites, toutes celles apparaissant suite à l'utilisation de "fx" poseront un problème d'affichage (qui disparaît au rendu, mais rend l'utilisation difficile)





Licence Creative Commons
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 2.0 Belgique.

J'ai décidé d'essayer de reproduire la structure du flocon de Koch dans Structure Synth . C'est à dire, ceci : ( source... Rate this posting:
{[["☆","★"]]}