Bestand:Von koch 6 etapes.svg
Uit testwiki
Naar navigatie springen
Naar zoeken springen
Afmetingen van deze voorvertoning van het type PNG van dit SVG-bestand: 600 × 174 pixels Andere resoluties: 320 × 93 pixels | 640 × 186 pixels | 1.024 × 297 pixels | 1.280 × 371 pixels | 2.560 × 742 pixels.
Oorspronkelijk bestand (SVG-bestand, nominaal 600 × 174 pixels, bestandsgrootte: 2 kB)
Dit bestand is afkomstig van Wikimedia Commons en kan ook in andere projecten gebruikt worden. De bestandsbeschrijvingspagina wordt hieronder weergegeven.
Beschrijving
| BeschrijvingVon 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. |
| Datum | |
| Bron | Eigen werk |
| Auteur | Christophe Dang Ngoc Chan (cdang) |
| Toestemming (Hergebruik van dit bestand) |
GFDL |
| Andere versies | 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 ontwikkeling 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).
Iterative source code
// ******************************
// * *
// * "Snowflake" von Koch curve *
// * *
// ******************************
clear;
clf;
// **************
// * constants *
// **************
n = 6;
// number of steps
// limited to 9 (262 145 points), otherwise the stacksize must be changed
// 6 steps (4 097 points) are enough for a good rendering
N = 4^n+1; // amount of points
sin_soixante = sqrt(3)/2; // sin(60°)
l = 1; // length of the initial line (arbitrary unit)
// ******************
// * initialisation *
// ******************
ycourbe = [zeros(1,N)];
ycourbe1 = ycourbe;
// *************
// * functions *
// *************
function [xx, yy] = etape(x, y)
// from a line [(x(1),y(1)) ; (x(2),y(2))]
// make the line [(xx(1),yy(1)) ; (xx(2),yy(2)) ; (xx(3),yy(3))]
// x and y are 2-cells tables, the ends of the basis line
// xx and yy are 3-cells tables
// the edges of the equilateral triangle
xu = (x(2)-x(1))/3;
yu = (y(2)-y(1))/3;
// third of the basis line vector
xv = 0.5*xu - sin_soixante*yu;
yv = sin_soixante*xu + 0.5*yu;
// vector turned by +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)
// builds the curve
// initialisation
xkoch = x;
ykoch = y;
xkoch1 = x;
ykoch1 = y;
for i=1:n
jmax = 4^(i-1);
// number of lines at the beginning of the step i
for j=1:jmax/2+1
// we work with two points which indices are j and j+1 (line #j)
// thanks t the symmetry, we work with a half curve
decalage = (j-1)*4;
// the new points shift the next points by this offset
x_init = xkoch(j:j+1);
y_init = ykoch(j:j+1);
// line #j
[x_trans, y_trans] = etape(x_init,y_init);
// transformed line
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);
// values put in the global vector
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);
// 2nd half-curve
end
endfunction
// ****************
// * main program *
// ****************
xcourbe(2) = l;
[xcourbe,ycourbe] = vonkoch(xcourbe,ycourbe,n);
// drawing the curve
xpoly(xcourbe,ycourbe)
isoview(0,l,0,l*sin_soixante/3)
The following code can be added to directly generate the file (the SVG export was not implemented at the time the file was created).
// saving the file
name = "von_koch_"+string(n)+"_steps.svg";
xs2svg(0, name)
Recursive source code
The code is more compact but the execution is slower, and does not generate the table of values.
//============================================================================
// name: von_koch.sce
// author: Christophe Dang Ngoc Chan
// date of creation: 2012-10-23
// dates of modification:
// 2013-07-08: quotes ' -> "
// 2013-07-2: vectorisation of the calculations
//----------------------------------------------------------------------------
// version of Scilab: 5.3.1
// required Atoms modules: aucun
//----------------------------------------------------------------------------
// Objective: draws the von Koch's "snowflake"
// Inputs: none (parameters are hard coded)
// Outputs: graphical window with a curve; SVG file
//============================================================================
clear;
clf;
// *************
// * constants *
// **************
n = 6;
// number of steps
// limited to 9 (262 145 points), otherwise the stacksize must be changed
// 6 steps (4 097 points) are enough for a good rendering
sin_soixante = sqrt(3)/2; // sin(60°)
l = 1;
// length of the initial line (arbitrary unit)
// ******************
// * initialisation *
// ******************
// *************
// * functions *
// *************
function [] = vonkoch(A, B, i)
u = (B - A)/3 ; // third of the AB vector
v = [0.5*u(1) - sin_soixante*u(2) ; sin_soixante*u(1) + 0.5*u(2)] ;
// vector turned by +60°
C = A + u ;
D = C + v ;
E = B - u ;
// points of the line
if i == 1 then
// drawing the smallest segments
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);
// recursive call
end
endfunction
// ****************
// * main program *
// ****************
beginning = [0;0] ;
ending = [l;0] ;
vonkoch(beginning, ending, n)
isoview(0,l,0,sin_soixante*l)
// Saving the file
name = "von_koch_"+string(n)+"_steps.svg" ;
xs2svg(0, name)
Licentie
Ik, de auteursrechthebbende van dit werk, maak het hierbij onder de volgende licenties beschikbaar:
| Toestemming wordt verleend voor het kopiëren, verspreiden en/of wijzigen van dit document onder de voorwaarden van de GNU-licentie voor vrije documentatie, versie 1.2 of enige latere versie als gepubliceerd door de Free Software Foundation; zonder Invariant Sections, zonder Front-Cover Texts, en zonder Back-Cover Texts. Een kopie van de licentie is opgenomen in de sectie GNU-licentie voor vrije documentatie.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue |
| Dit bestand is gelicenseerd onder de Creative Commons-licentie Naamsvermelding-Gelijk delen 3.0 Unported | ||
| ||
| Deze licentietag is toegevoegd aan dit bestand in verband met de GFDL licentie-update.http://creativecommons.org/licenses/by-sa/3.0/CC BY-SA 3.0Creative Commons Attribution-Share Alike 3.0truetrue |
U mag zelf één van de licenties kiezen.
Bijschriften
Beschrijf in één regel wat dit bestand voorstelt
Items getoond in dit bestand
beeldt af
Waarde zonder Wikidata-item
29 jun 2006
Bestandsgeschiedenis
Klik op een datum/tijd om het bestand te zien zoals het destijds was.
| Datum/tijd | Miniatuur | Afmetingen | Gebruiker | Opmerking | |
|---|---|---|---|---|---|
| huidige versie | 21 feb 2018 12:22 | 600 × 174 (2 kB) | wikimediacommons>Cdang | even values and indentations |
Bestandsgebruik
Dit bestand wordt op de volgende pagina gebruikt:
Overgenomen van "https://nl.wiki.beta.math.wmflabs.org/wiki/Bestand:Von_koch_6_etapes.svg"
