Fichier:Von koch 6 etapes.svg
De testwiki
Aller à la navigation
Aller à la recherche
Taille de cet aperçu PNG pour ce fichier SVG : 600 × 174 pixels. Autres résolutions : 320 × 93 pixels | 640 × 186 pixels | 1 024 × 297 pixels | 1 280 × 371 pixels | 2 560 × 742 pixels.
Fichier d’origine (Fichier SVG, nominalement de 600 × 174 pixels, taille : 2 kio)
Ce fichier provient de Wikimedia Commons et peut être utilisé par d'autres projets. Sa description sur sa page de description est affichée ci-dessous.
Description
| DescriptionVon koch 6 etapes.svg |
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 |
Scilab source
| This media was created with Scilab, a free open-source software. Here is a listing of the Scilab source used to create this file. |
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 :
| 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.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue |
| Ce fichier est disponible selon les termes de la licence Creative Commons Attribution – Partage dans les Mêmes Conditions 3.0 Non Transposé. | ||
| ||
| 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.http://creativecommons.org/licenses/by-sa/3.0/CC BY-SA 3.0Creative Commons Attribution-Share Alike 3.0truetrue |
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
Valeur sans élément de Wikidata
29 juin 2006
Historique du fichier
Cliquer sur une date et heure pour voir le fichier tel qu'il était à ce moment-là.
| Date et heure | Vignette | Dimensions | Utilisateur | Commentaire | |
|---|---|---|---|---|---|
| actuel | 21 février 2018 à 12:22 | 600 × 174 (2 kio) | wikimediacommons>Cdang | even values and indentations |
Utilisation du fichier
Les 2 pages suivantes utilisent ce fichier :
