Von_koch_6_etapes.svg (ملف إس في جي، أبعاده 621 × 180 بكسل، حجم الملف: 1 كيلوبايت)
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)
|
الصفحات التالية تحتوي على وصلة لهذه الصورة: