Fichier d’origine(Fichier SVG, nominalement de 600 × 174 pixels, taille : 2 kio)

Description

Description
English: von Koch snowflake curve after 6 steps (4,097 points); initially created with Scilab, transformed into SVG by pstoedit, layout by Inkscape. New version was created by a text editor.
Français : Courbe du flocon de neige de von Koch après 6 étapes (4,097 points) ; initialement créé avec Scilab, transformé en SVG avec pstoedit, mis en forme avec Inkscape. La nouvelle version a été faite avec un éditeur de texte.
Date
Source Travail personnel
Auteur Christophe Dang Ngoc Chan (cdang)
Autorisation
(Réutilisation de ce fichier)
GFDL
Autres versions Image:Von koch 1 etape.svg, Image:Von koch 2 etapes.svg, Image:Von koch 3 etapes.svg, Image:Von koch 4 etapes.svg, Image:Von koch 5 etapes.svg, Image:Von koch 6 etapes.svg, Image:VonKoch.svg
SVG information
InfoField
 
Le code de ce fichier SVG est valide.
 
Cette carte a été créée avec un éditeur de texte.

Scilab source

English: English version by default.
Français : Version française, si les préférences de votre compte sont réglées (voir Special:Preferences).


Version itérative

// ************************************************
// *                                              *
// * Courbe de von Koch dite du "flocon de neige" *
// *                                              *
// ************************************************

clear;
clf;

// **************
// * constantes *
// **************

n = 6;
// nombre d'étapes ;
// limité à 9 (262 145 points), sinon il faut changer la taille de la  pile (stacksize)
// 6 etapes (4 097 points) sont suffisantes pour un bon rendu
N = 4^n+1;
// nombre de points
sin_soixante = sqrt(3)/2; // sin(60°)
l = 1;
// longueur du segment initial (unité arbitraire)

// ******************
// * initialisation *
// ******************

ycourbe = [zeros(1,N)];
ycourbe1 = ycourbe;

// *************
// * fonctions *
// *************

function [xx, yy] = etape(x, y)
  
  // à partir d'un segment [(x(1),y(1)) ; (x(2),y(2))]
  // fabrique la ligne [(xx(1),yy(1)) ; (xx(2),yy(2)) ; (xx(3),yy(3))]
  // x et y sont des tableaux de 2 valeurs, les extremites du segment de base
  // xx et yy sont des tableaux de 3 valeurs,
  // les angles du triangle équilatéral
  
  xu = (x(2)-x(1))/3;
  yu = (y(2)-y(1))/3;
  // ----- fr : tiers du vecteur du segment de base
  // ----- en : third of the basis line vector
  
  xv = 0.5*xu - sin_soixante*yu;
  yv = sin_soixante*xu + 0.5*yu;
  // vecteur tourné de +60°
  
  xx(1) = x(1)+xu; yy(1) = y(1)+yu;
  xx(3) = x(2)-xu; yy(3) = y(2)-yu;
  
  xx(2) = xx(1) + xv;
  yy(2) = yy(1) + yv;  
endfunction

function [xkoch,ykoch]=vonkoch(x,y,n)
  // construit la courbe
  // initialisation
  xkoch = x;
  ykoch = y;
  xkoch1 = x;
  ykoch1 = y;
  for i=1:n
    jmax = 4^(i-1);
    // nombre de segments au début de l'étape i
    for j=1:jmax/2+1
      // on travaille par deux points d'indices j et j+1 (segment n°j)
      // grâce à la symétrie, on travaille sur une demie courbe
      decalage = (j-1)*4; 
      // les nouveaux points décalent l'indice des points suivants
      x_init = xkoch(j:j+1);
      y_init = ykoch(j:j+1);
      // segment n°j
      [x_trans, y_trans] = etape(x_init,y_init);
      // segment transformé
      xkoch1(decalage+1) = x_init(1); xkoch1(decalage+5) = x_init(2);
      ykoch1(decalage+1) = y_init(1); ykoch1(decalage+5) = y_init(2);
      for k=1:3
        xkoch1(k+decalage+1) = x_trans(k);
        ykoch1(k+decalage+1) = y_trans(k);
        // mise dans le vecteur global
      end
    end
    xkoch = xkoch1; ykoch = ykoch1;
  end
  
  for i=1:4^n
    ykoch(N-i+1) = ykoch(i);
    xkoch(N-i+1) = l-xkoch(i); 
    // 2e demie courbe
  end
endfunction

// ***********************
// * programme principal *
// ***********************

xcourbe(2) = l;
[xcourbe,ycourbe] = vonkoch(xcourbe,ycourbe,n);

// tracé de la courbe

xpoly(xcourbe,ycourbe)
isoview(0,l,0,l*sin_soixante/3)

On peut ajouter le code suivant pour créer le fichier (l'export au format SVG n'était pas encore disponible lorsque le fichier avait été créé).

enregistrement du fichier

nom='von_koch_'+code2str(n)+'_etapes.svg';
xs2svg(0,nom)

Version récursive

Le code est plus compact mais l'exécution est plus lente, et ne génère pas le tableau des valeurs.

//============================================================================
// nom : von_koch.sce
// auteur : Christophe Dang Ngoc Chan
// date de création : 2012-10-23
// dates de modification : 
//    2013-07-08 : guillemets ' -> "
//    2013-07-2 : vectorisation du calcul
//----------------------------------------------------------------------------
// version de Scilab : 5.3.1
// module Atoms requis : aucun
//----------------------------------------------------------------------------
// Objectif : trace la courbe du "flocon de neige" de von Koch
// Entrées : aucun (paramètres codés en dur)
// Sorties : fenêtre graphique avec une courbe ; fichier SVG
//============================================================================

clear;
clf;

// **************
// * constantes *
// **************

n = 6; // nombre d'étapes ;
// limité à 9 (262 145 points), sinon il faut changer la taille de la  pile (stacksize)
// 6 etapes (4 097 points) sont suffisantes pour un bon rendu
sin_soixante = sqrt(3)/2; // sin(60°)
l = 1; // longueur du segment initial (unité arbitraire)

// ******************
// * initialisation *
// ******************



// *************
// * fonctions *
// *************

function []=vonkoch(A, B, i)
    u = (B - A)/3 ; // tiers du vecteur AB
    v = [0.5*u(1) - sin_soixante*u(2) ; sin_soixante*u(1) + 0.5*u(2)] ;
    // vecteur tourné de +60°
    C = A + u ;
    D = C + v ;
    E = B - u ;
    if i == 1 then
        x = [A(1) ; C(1) ; D(1) ; E(1) ; B(1)] ;
        y = [A(2) ; C(2) ; D(2) ; E(2) ; B(2)] ;
        xpoly(x, y, "lines")
    else
        j = i - 1 ;
        vonkoch(A, C, j);
        vonkoch(C, D, j);
        vonkoch(D, E, j);
        vonkoch(E, B, j);
    end
endfunction

// ***********************
// * programme principal *
// ***********************

debut = [0;0] ;
fin = [l;0];

vonkoch(debut, fin, n)

isoview(0, l, 0, l*sin_soixante/3)

// enregistrement du fichier

nom = "von_koch_"+string(n)+"_etapes.svg" ;
xs2svg(0, nom)

Conditions d’utilisation

Moi, en tant que détenteur des droits d’auteur sur cette œuvre, je la publie sous les licences suivantes :
GNU head Vous avez la permission de copier, distribuer et modifier ce document selon les termes de la GNU Free Documentation License version 1.2 ou toute version ultérieure publiée par la Free Software Foundation, sans sections inaltérables, sans texte de première page de couverture et sans texte de dernière page de couverture. Un exemplaire de la licence est inclus dans la section intitulée GNU Free Documentation License.
w:fr:Creative Commons
paternité partage à l’identique
Ce fichier est disponible selon les termes de la licence Creative Commons Attribution – Partage dans les Mêmes Conditions 3.0 (non transposée).
Vous êtes libre :
  • de partager – de copier, distribuer et transmettre cette œuvre
  • d’adapter – de modifier cette œuvre
Sous les conditions suivantes :
  • paternité – Vous devez donner les informations appropriées concernant l'auteur, fournir un lien vers la licence et indiquer si des modifications ont été faites. Vous pouvez faire cela par tout moyen raisonnable, mais en aucune façon suggérant que l’auteur vous soutient ou approuve l’utilisation que vous en faites.
  • partage à l’identique – Si vous modifiez, transformez, ou vous basez sur cette œuvre, vous devez distribuer votre contribution sous la même licence ou une licence compatible avec celle de l’original.
Ce bandeau de licence a été ajouté à ce fichier dans le cadre de la procédure de mise à jour des licences des images sous GFDL.
Vous pouvez choisir l’une de ces licences.

Légendes

Ajoutez en une ligne la description de ce que représente ce fichier

Éléments décrits dans ce fichier

dépeint

Historique du fichier

Cliquer sur une date et heure pour voir le fichier tel qu'il était à ce moment-là.

Date et heureVignetteDimensionsUtilisateurCommentaire
actuel21 février 2018 à 13:22Vignette pour la version du 21 février 2018 à 13:22600 × 174 (2 kio)Cdangeven values and indentations
19 mai 2007 à 23:48Vignette pour la version du 19 mai 2007 à 23:48621 × 180 (1 kio)FibonacciRemade from scratch with simpler code.
29 juin 2006 à 16:52Vignette pour la version du 29 juin 2006 à 16:52309 × 90 (90 kio)Cdangin plain SVG (better behaviour)
29 juin 2006 à 15:06Vignette pour la version du 29 juin 2006 à 15:06309 × 90 (96 kio)Cdang{{Information |Description= {{en|von Koch snow flake curve after 6 steps; created with Scilab, transformed into SVG by pstoedit, layout by Inkscape}} {{fr|Courbe du flocon de neige de von Koch après 6 étapes ; créé avec Scilab, transformé en SVG avec

Usage global du fichier

Les autres wikis suivants utilisent ce fichier :

Métadonnées