تضامنًا مع حق الشعب الفلسطيني |
ملف:Von koch 6 etapes.svg
الملف الأصلي (ملف SVG، أبعاده 600 × 174 بكسل، حجم الملف: 2 كيلوبايت)
هذا ملف من ويكيميديا كومنز. معلومات من صفحة وصفه مبينة في الأسفل. كومنز مستودع ملفات ميديا ذو رخصة حرة. |
ملخص
الوصفVon 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. |
التاريخ | |
المصدر | عمل شخصي |
المؤلف | Christophe Dang Ngoc Chan (cdang) |
الترخيص (إعادة استخدام هذا الملف) |
GFDL |
إصدارات أخرى | 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 منشأ الملف 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)
ترخيص
يسمح نسخ وتوزيع و/أو تعديل هذه الوثيقة تحت شروط رخصة جنو للوثائق الحرة، الإصدار 1.2 أو أي إصدار لاحق تنشره مؤسسة البرمجيات الحرة؛ دون أقسام ثابتة ودون نصوص أغلفة أمامية ودون نصوص أغلفة خلفية. نسخة من الرخصة تم تضمينها في القسم المسمى GNU Free Documentation License.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue |
هذا الملفُّ مُرخَّص بموجب رخصة المشاع الإبداعي نسبة المُصنَّف إِلى مُؤَلِّفه - المشاركة بالمثل 3.0 العامة | ||
| ||
تمت إضافة علامة الترخيص لهذا الملف كجزء من رخصة جنو للوثائق الحرة تحديث الترخيص.http://creativecommons.org/licenses/by-sa/3.0/CC BY-SA 3.0Creative Commons Attribution-Share Alike 3.0truetrue |
العناصر المصورة في هذا الملف
يُصوِّر
قيمة ما بدون عنصر ويكي بيانات
٢٩ يونيو 2006
تاريخ الملف
اضغط على زمن/تاريخ لرؤية الملف كما بدا في هذا الزمن.
زمن/تاريخ | صورة مصغرة | الأبعاد | مستخدم | تعليق | |
---|---|---|---|---|---|
حالي | 15:22، 21 فبراير 2018 | 600 × 174 (2 كيلوبايت) | commonswiki>Cdang | even values and indentations |
استخدام الملف
ال1 ملف التالي مكررات لهذا الملف (المزيد من التفاصيل):
- ملف:Von koch 6 etapes.svg من ويكيميديا كومنز
الصفحة التالية تستخدم هذا الملف:
بيانات وصفية
هذا الملف يحتوي على معلومات إضافية، غالبا ما تكون أضيفت من قبل الكاميرا الرقمية أو الماسح الضوئي المستخدم في إنشاء الملف.
إذا كان الملف قد عدل عن حالته الأصلية، فبعض التفاصيل قد لا تعبر عن الملف المعدل.
العرض | 600px |
---|---|
الارتفاع | 174px |