Fractal 3 branches
Résolu/Fermé
mopadi
Messages postés
6
Date d'inscription
mercredi 21 novembre 2012
Statut
Membre
Dernière intervention
18 décembre 2012
-
21 nov. 2012 à 16:27
mopadi Messages postés 6 Date d'inscription mercredi 21 novembre 2012 Statut Membre Dernière intervention 18 décembre 2012 - 21 nov. 2012 à 21:02
mopadi Messages postés 6 Date d'inscription mercredi 21 novembre 2012 Statut Membre Dernière intervention 18 décembre 2012 - 21 nov. 2012 à 21:02
A voir également:
- Fractal 3 branches
- Picasa 3 - Télécharger - Albums photo
- Photorecit 3 - Télécharger - Visionnage & Diaporama
- Ai suite 3 download - Télécharger - Optimisation
- Qu'est ce qu'une femme fait 3 fois par jour et un homme une fois dans sa vie - Forum Loisirs / Divertissements
- +33 3 - Forum Mobile
3 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
21 nov. 2012 à 18:59
21 nov. 2012 à 18:59
Je ne connais pas trop JavaScript, et encore moins l'outil Canevas, alors je ne sais pas trop ce qu'il est possible de faire, en particulier ce serait bien de pouvoir copier le dessin actuel pour le coller plusieurs fois à des endroits différents et avec des translations, mais comme je ne sais pas si c'est possible je vais me contenter de dessiner les branches une par une, ce qui est nettement plus long, mais ce sera un début.
Remarque : j'ai fait ça de tête, il faudrait vérifier que ça dessine bien la bonne chose...
À vue de nez, il faudrait prendre n=8 ou 9, pour avoir les mêmes détails que sur l'image.
function fractale_aux(n,x,y,sx,sy) { // Tracer une ligne entre les points (x,y) et (x+sx/2,y+sy/2) if (n>0) { fractale_aux(n-1,x+sx/2,y+y/2, sx/2,sy/2); fractale_aux(n-1,x+sx/2,y+y/2,-sy/2,sx/2); fractale_aux(n-1,x+sx/2,y+y/2, sy/2,sx/2); } } function fractale(n,size) { fractale_aux(n,sz/2,0,0,sz); }
Remarque : j'ai fait ça de tête, il faudrait vérifier que ça dessine bien la bonne chose...
À vue de nez, il faudrait prendre n=8 ou 9, pour avoir les mêmes détails que sur l'image.
mopadi
Messages postés
6
Date d'inscription
mercredi 21 novembre 2012
Statut
Membre
Dernière intervention
18 décembre 2012
21 nov. 2012 à 19:32
21 nov. 2012 à 19:32
d'abord merci d'avoir repondu.
L'outil canevas permet de dessiner, dans notre ca, je pense qu'on doit dessiner des segment, et pour ca il faut une coordonnée de depart de de fin du segment.
Je ne comprend malheureusement pas votre code, donc si il était possible de plus le détailler, ou d'expliquer la logique de votre code.
En faite il est la mon principale proleme, je n'arrive pas à imaginé d'imbrication de condition et boucle pour faire ce dessin. Je suis à la recher plus du concept, je me debrouillerai ensuite pour le codé de manière a que ca marche :)
merci
L'outil canevas permet de dessiner, dans notre ca, je pense qu'on doit dessiner des segment, et pour ca il faut une coordonnée de depart de de fin du segment.
Je ne comprend malheureusement pas votre code, donc si il était possible de plus le détailler, ou d'expliquer la logique de votre code.
En faite il est la mon principale proleme, je n'arrive pas à imaginé d'imbrication de condition et boucle pour faire ce dessin. Je suis à la recher plus du concept, je me debrouillerai ensuite pour le codé de manière a que ca marche :)
merci
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
21 nov. 2012 à 20:02
21 nov. 2012 à 20:02
"pour ca il faut une coordonnée de depart de de fin du segment."
Ça tombe bien parce que je les ai, il faut juste remplacer mon commentaire par le code qui va bien.
Après comme c'est une fractale je fais juste un appel récursif, plus exactement trois appels récursifs vu la forme de ta fractale.
// (x,y) est la base de la zone de dessin
// (sx,sy) est le sens d'orientation du dessin
// si (sx>0,s=0) : on dessine vers le haut à partir de (x,y)
// si (sx<0, s=0) : on dessine vers le bas à partir de (x,y)
// si (sx=0, sy>0) : on dessine vers la drotie à partir de (x,y)
// si (sx=0, sy<0) : on dessine vers la gauche à partir de (x,y)
function fractale_aux(n,x,y,sx,sy)
{
// Tu traces une ligne droite sur ton canevas, à partie de la base, et en suivant l'orientation
 // Tracer une ligne entre les points (x,y) et (x+sx/2,y+sy/2)
 // si n==0 le traitement est terminé, sinon on découpe le dessin en trois parties
 if (n>0)
 {
   // La base des dessins suivants est celle où s'arrête la ligne droite tracée (x+sx/2,y+sy/2)
   fractale_aux(n-1,x+sx/2,y+y/2, sx/2,sy/2); // on conserve l'orientation
   fractale_aux(n-1,x+sx/2,y+y/2,-sy/2,sx/2); // on tourne l'orientation vers la gauche
   fractale_aux(n-1,x+sx/2,y+y/2, sy/2,sx/2); // on tourne l'orientation vers la droite
 }
}
// Fonction principale, dessine un carré de taille "size", avec "n" degrés de récursivité
function fractale(n,size)
{
 // La base du premier segment est au milieu en bas, orientation vers le haut
 fractale_aux(n,sz/2,0,0,sz);
}
Ça tombe bien parce que je les ai, il faut juste remplacer mon commentaire par le code qui va bien.
Après comme c'est une fractale je fais juste un appel récursif, plus exactement trois appels récursifs vu la forme de ta fractale.
// (x,y) est la base de la zone de dessin
// (sx,sy) est le sens d'orientation du dessin
// si (sx>0,s=0) : on dessine vers le haut à partir de (x,y)
// si (sx<0, s=0) : on dessine vers le bas à partir de (x,y)
// si (sx=0, sy>0) : on dessine vers la drotie à partir de (x,y)
// si (sx=0, sy<0) : on dessine vers la gauche à partir de (x,y)
function fractale_aux(n,x,y,sx,sy)
{
// Tu traces une ligne droite sur ton canevas, à partie de la base, et en suivant l'orientation
 // Tracer une ligne entre les points (x,y) et (x+sx/2,y+sy/2)
 // si n==0 le traitement est terminé, sinon on découpe le dessin en trois parties
 if (n>0)
 {
   // La base des dessins suivants est celle où s'arrête la ligne droite tracée (x+sx/2,y+sy/2)
   fractale_aux(n-1,x+sx/2,y+y/2, sx/2,sy/2); // on conserve l'orientation
   fractale_aux(n-1,x+sx/2,y+y/2,-sy/2,sx/2); // on tourne l'orientation vers la gauche
   fractale_aux(n-1,x+sx/2,y+y/2, sy/2,sx/2); // on tourne l'orientation vers la droite
 }
}
// Fonction principale, dessine un carré de taille "size", avec "n" degrés de récursivité
function fractale(n,size)
{
 // La base du premier segment est au milieu en bas, orientation vers le haut
 fractale_aux(n,sz/2,0,0,sz);
}
mopadi
Messages postés
6
Date d'inscription
mercredi 21 novembre 2012
Statut
Membre
Dernière intervention
18 décembre 2012
21 nov. 2012 à 20:48
21 nov. 2012 à 20:48
J'ai une question, il vous a fallu combien de temps pour trouver ce code dans votre tête? Comme dit précedement j'y avait passé une aprem... Il y a quelque faute, mais la logique est la, vous m'aurez appris quelque chose aujourd hui :p merci
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
21 nov. 2012 à 20:56
21 nov. 2012 à 20:56
Au niveau de la logique c'est assez simple à mettre en place, il suffit de l'avoir déjà vu deux ou trois fois pour savoir comment ça se passe, le plus dur en fait c'est au niveau des indices, parce que c'est vraiment spécifique à ton problème.
mopadi
Messages postés
6
Date d'inscription
mercredi 21 novembre 2012
Statut
Membre
Dernière intervention
18 décembre 2012
21 nov. 2012 à 21:02
21 nov. 2012 à 21:02
Finalement il m'aura fallu un peu de temps, mais j'ai compris l'intégralité de votre code. c'est au niveau des direction que c'est le plus dur, j'ai du effectuer des test pour avoir les bonnes direction.
Merci beaucoup, je met le post en résolu.
Merci beaucoup, je met le post en résolu.