File:Von koch 6 etapes.svg
Original file (SVG file, nominally 600 × 174 pixels, file size: 2 KB)
Captions
Summary
[edit]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 | Own work |
Author | Christophe Dang Ngoc Chan (cdang) |
Permission (Reusing this file) |
GFDL |
Other 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 development InfoField | This map was created with a text editor. |
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. |
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)
Licensing
[edit]Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled GNU Free Documentation License.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue |
This file is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license. | ||
| ||
This licensing tag was added to this file as part of the GFDL licensing update.http://creativecommons.org/licenses/by-sa/3.0/CC BY-SA 3.0Creative Commons Attribution-Share Alike 3.0truetrue |
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 11:22, 21 February 2018 | 600 × 174 (2 KB) | Cdang (talk | contribs) | even values and indentations | |
21:48, 19 May 2007 | 621 × 180 (1 KB) | Fibonacci (talk | contribs) | Remade from scratch with simpler code. | ||
14:52, 29 June 2006 | 309 × 90 (90 KB) | Cdang (talk | contribs) | in plain SVG (better behaviour) | ||
13:06, 29 June 2006 | 309 × 90 (96 KB) | Cdang (talk | contribs) | {{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 |
You cannot overwrite this file.
File usage on Commons
The following 2 pages use this file:
File usage on other wikis
The following other wikis use this file:
- Usage on ar.wikipedia.org
- Usage on ca.wikipedia.org
- Usage on es.wikipedia.org
- Usage on eu.wikipedia.org
- Usage on fr.wikipedia.org
- Usage on fr.wikibooks.org
- Usage on hr.wikipedia.org
- Usage on ht.wikipedia.org
- Usage on kn.wikipedia.org
- Usage on lo.wikipedia.org
- Usage on mn.wikipedia.org
- Usage on nl.wikipedia.org
- Usage on sh.wikipedia.org
- Usage on ta.wikipedia.org
- Usage on tcy.wikipedia.org
- Usage on vo.wikipedia.org
- Usage on zh.wikipedia.org
- Usage on zh.wikiversity.org
Metadata
This file contains additional information such as Exif metadata which may have been added by the digital camera, scanner, or software program used to create or digitize it. If the file has been modified from its original state, some details such as the timestamp may not fully reflect those of the original file. The timestamp is only as accurate as the clock in the camera, and it may be completely wrong.
Width | 600px |
---|---|
Height | 174px |