Oui croyez Alain madame la prof de maths et vous les élèves, faut pas croire c'est quelque formule de base à assimiler, et après juste du calcul mentale et de la logique, c'est tout je vais vous faire un exemple, pour vous la madame prof de maths, la programmation vrml c'est vraiment à 90% des mathématiques, c'est juste la notation qui change, et je vais vous dire on peut etre nul en maths et bon en vrml :
# Les Tubes des clones
Transform { translation 8 1.40 10 rotation 1 0 0 3.15
children Shape { geometry DEF tube Cylinder { radius .32 height 2 top TRUE side TRUE bottom TRUE }
appearance Appearance { material Material { emissiveColor .2 1 .5 transparency .8}}}}
Alors cette parti la du code : le "Transform", "children", "Shape" et toute les incolades c'est juste pour la notation, pour que votre ordinateur puisse le lire, c'est les 10% d'informatique, ca s'apprend c'est des formules toutes betes à apprendre par coeur. Après vous avez, le "geometry Cylinder", qui sert à définir un cylindre, ainsi vous pouvez faire un carré/rectangle qui se notera "geometry Box", un cone "geometry Cone", ou une sphere "geometry Sphere". Après vous avez le rayon : radius .32, c'est à dire 32 cm de rayon ou 0.32 c'est pareil, "height" c'est pour la hauteur, 2 m ici. Le reste "TRUE side....etc" c'est juste pour dire à l'ordi de montrer toute les facettes du cylindre, parce que on effet si je change le TRUE en FALSE on ne voit plus certaines facettes, side ca serait les cotés, bottom et top le dessous et dessus du cylindre. Après il y a le appearance Appearance { material etc.... c'est uniquement pour définir la couleur, ou les image que vous voulez mettre sur votre cylindre, sa s'apprend aussi sans probleme. Par exemple transparency c'est poour définir le degré de transparence du cylindre. Et enfin madame la prof de maths, la vous allee très vite voir que c'est surtout des maths. Parce que en effet, taper les information necessair pour créer un cylindre ca prendre 30 second chrono en main, sérieusement pas plus, le plus long c'est de le placer dans l'espace. Et oui tout cela n'est qu'un repère orthonormé madame

. D'ou le "translation", et le "rotation".
Translation nul = 0 0 0
= x y z
Rotation meme principe sauf que se sont les axes qui sont définis par les 3 premier 0, et le 4eme sert à définir l'angle.
Ainsi vous comprenez sans dout mieux se qui suit :
Les "Transform" pour commencer le programme comme d'habitude, puis le children. Les Use sert enfait à réutiliser le cylindre que j'ai crée ci-dessus, c'est pourquoi j'ai écris "DEF tube", afin que l'ordi puisse le réutiliser autant de fois que necessair ou presque.
Et maintenant je fais juste varier la translation de chacun des tubes que j'ai créé

Pour les placer en série, et mettre les clones dedans

Transform { children USE tube translation 6 1.40 10 rotation 1 0 0 3.15}
Transform { children USE tube translation 4 1.40 10 rotation 1 0 0 3.15}
Transform { children USE tube translation 2 1.40 10 rotation 1 0 0 3.15}
Transform { children USE tube translation 0 1.40 10 rotation 1 0 0 3.15}
Transform { children USE tube translation -2 1.40 10 rotation 1 0 0 3.15}
Transform { children USE tube translation -4 1.40 10 rotation 1 0 0 3.15}
Transform { children USE tube translation -6 1.40 10 rotation 1 0 0 3.15}
Transform { children USE tube translation -8 1.40 10 rotation 1 0 0 3.15}
Transform { children USE tube translation 8 1.40 -10 rotation 1 0 0 3.15}
Transform { children USE tube translation 6 1.40 -10 rotation 1 0 0 3.15}
Transform { children USE tube translation 4 1.40 -10 rotation 1 0 0 3.15}
Transform { children USE tube translation 2 1.40 -10 rotation 1 0 0 3.15}
Transform { children USE tube translation 0 1.40 -10 rotation 1 0 0 3.15}
Transform { children USE tube translation -2 1.40 -10 rotation 1 0 0 3.15}
Transform { children USE tube translation -4 1.40 -10 rotation 1 0 0 3.15}
Transform { children USE tube translation -6 1.40 -10 rotation 1 0 0 3.15}
Transform { children USE tube translation -8 1.40 -10 rotation 1 0 0 3.15}
Convaincu madame la prof de maths

?