Чөлөөт нэвтэрхий толь, Википедиагаас
Энэ файл нь өөр төслүүд ч хэрэглэж болохоор оруулагдсан байна.
файлын тайлбарын хуудас дээрх тайлбарыг доор үзүүлэв.
[edit] Summary
Description |
English: von Koch snowflake curve after 6 steps (4 097 points); created with Scilab, transformed into SVG by pstoedit, layout by Inkscape
Français : Courbe du flocon de neige de von Koch après 6 étapes (4 097 points) ; créé avec Scilab, transformé en SVG avec pstoedit, mis en forme avec Inkscape
|
Source |
self-made
|
Date |
29 June 2006
|
Author |
Christophe Dang Ngoc Chan
|
Permission
(Reusing this image) |
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 |
// ************************************************
// * *
// * Courbe de von Koch dite du "flocon de neige" *
// * *
// ************************************************
clear;
clf;
// **************
// * constantes *
// **************
n = 6; // nombre d'etapes ;
// limite a 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
rapport = sqrt(3)/2; // rapport entre la hauteur et le cote d'un triangle equilateral
l = 1; // longueur du segment initial
// ******************
// * initialisation *
// ******************
xcourbe = [zeros(1,N)];
xcourbe1 = xcourbe;
ycourbe = [zeros(1,N)];
ycourbe1 = ycourbe;
// *************
// * fonctions *
// *************
function [xx, yy] = etape(x, y)
// x et y sont des tableaux de 2 valeurs, les extremites du segment
// xx et yy sont des tableaux de 3 valeurs, les trois points intermediaires
xmilieu0 = (x(2)+x(1))/2;
ymilieu0 = (y(2)+y(1))/2; // position initiale du milieu
xu = x(2)-x(1);
yu = y(2)-y(1); // vecteur du segment
xn = y(1)-y(2);
yn = x(2)-x(1); // vecteur normal au segment
xx(1) = x(1)+xu/3; yy(1) = y(1)+yu/3;
xx(3) = x(2)-xu/3; yy(3) = y(2)-yu/3;
xx(2) = xmilieu0 + xn*rapport/3;
yy(2) = ymilieu0 + yn*rapport/3;
endfunction
// ***********************
// * programme principal *
// ***********************
xcourbe(2) = l;
for i=1:n
jmax = 4^(i-1); // nombre de segments au debut de l'etape i
for j=1:jmax/2+1 // on travaille par deux points j et j+1 (segment j)
// en raison de la symetrie, on travaille sur une demie courbe
decalage = (j-1)*4; // un point est decale en raison de l'apparition de nouveaux points
x_init = xcourbe(j:j+1);
y_init = ycourbe(j:j+1); // segment j
[x_trans, y_trans] = etape(x_init,y_init); // segment transforme'
xcourbe1(decalage+1) = x_init(1); xcourbe1(decalage+5) = x_init(2);
ycourbe1(decalage+1) = y_init(1); ycourbe1(decalage+5) = y_init(2);
for k=1:3
xcourbe1(k+decalage+1) = x_trans(k);
ycourbe1(k+decalage+1) = y_trans(k); // mise dans le vecteur global
end
end
xcourbe = xcourbe1; ycourbe = ycourbe1;
end
for i=1:4^n
ycourbe(N-i+1) = ycourbe(i);
xcourbe(N-i+1) = l-xcourbe(i); // 2e demie courbe
end
xpoly(xcourbe,ycourbe) // trace
isoview(0,l,0,rapport*l)
[edit] Licensing
I, the copyright holder of this work, hereby publish it under the following license:
|
Файлын түүх
Огноо/Цаг дээр нь дарж тухайн үед файл ямар байсныг харна уу.
| Огноо/Цаг | Хэмжээ | Хэрэглэгч | Тайлбар |
одоогийн | 21:48, 19 Тавдугаар сар 2007 | 621×180 (1 KB) | Fibonacci | |
| 14:52, 29 Зургаадугаар сар 2006 | 309×90 (90 KB) | Cdang | |
| 13:06, 29 Зургаадугаар сар 2006 | 309×90 (96 KB) | Cdang | |
Холбоос
Дараахь хуудсууд уг файлтай холбогдсон байна: