Voici une fonction permettant le calcul à partir d'IFS :Envoyé par Wikipédia
Cette fonction utilises des fichiers .ifs (a priori du logiciel FRACTINT) dont le format est brièvement expliqué ici : http://www.nahee.com/spanky/www/fractint/ifs_type.html
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 function xy = ifs(ifsfile,ifspath) %IFS % % Author : Jerome Briot (Dut) % Contact : dutmatlab#yahoo#fr -or- briot#cict#fr % Profil : www.mathworks.com/matlabcentral/newsreader/author/94805 % : www.developpez.net/forums/u125006/dut/ % % Version : 1.0 - 07 Sep 2009 % % MATLAB : 7.6.0.324 (R2008a) % System : Linux 2.6.24-24-generic % if nargin == 0 [ifsfile,ifspath] = uigetfile('*.ifs'); if ~ifsfile return end end [S,V,P] = readifs(ifsfile,ifspath); N = 100000; P = repmat(P,1,N/100); idx = randperm(N); xy = zeros(N,2); for n = 1:N xy(n+1,:) = xy(n,:)*S(:,:,P(idx(n)))+V(P(idx(n)),:); end
Voici la fonction de lecture de ces fichiers :
Voici une fonction de visualisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 function [S,V,P] = readifs(ifsfile,ifspath) %READIFS % % Author : Jerome Briot (Dut) % Contact : dutmatlab#yahoo#fr -or- briot#cict#fr % Profil : www.mathworks.com/matlabcentral/newsreader/author/94805 % : www.developpez.net/forums/u125006/dut/ % % Version : 1.0 - 07 Sep 2009 % % MATLAB : 7.6.0.324 (R2008a) % System : Linux 2.6.24-24-generic % if nargin == 0 [ifsfile,ifspath] = uigetfile('*.ifs'); if ~ifsfile return end end M = load(fullfile(ifspath,ifsfile),'-ascii'); P = ones(1,100); k = 1; S = zeros(2,2,size(M,1)); for n=1:size(M,1) S(1,1,n) = M(n,1); S(2,1,n) = M(n,2); S(1,2,n) = M(n,3); S(2,2,n) = M(n,4); V(n,:) = M(n,5:6); f = round(100*M(n,end)); P(k:k+f-1) = n; k = k+f; end
Et la demo :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 function h = drawifs(xy,ax) %DRAWIFS % % Author : Jerome Briot (Dut) % Contact : dutmatlab#yahoo#fr -or- briot#cict#fr % Profil : www.mathworks.com/matlabcentral/newsreader/author/94805 % : www.developpez.net/forums/u125006/dut/ % % Version : 1.0 - 07 Sep 2009 % % MATLAB : 7.6.0.324 (R2008a) % System : Linux 2.6.24-24-generic % error(nargchk(1,2,nargin)); if nargin == 1 figure; ax = axes; end axes(ax); h = plot(xy(2:end,1),xy(2:end,2),'k.');
Les fichiers .ifs récupérés sur le site
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 function demoifs %DRAWIFS % % Author : Jerome Briot (Dut) % Contact : dutmatlab#yahoo#fr -or- briot#cict#fr % Profil : www.mathworks.com/matlabcentral/newsreader/author/94805 % : www.developpez.net/forums/u125006/dut/ % % Version : 1.0 - 07 Sep 2009 % % MATLAB : 7.6.0.324 (R2008a) % System : Linux 2.6.24-24-generic % ifspath = './samples/'; d = dir(fullfile(ifspath,'*.ifs')); for n = 1:numel(d) figure('color','w','numbertitle','off','name','IFS Demo'); ax = axes; xy = ifs(d(n).name,ifspath); drawifs(xy,ax); set(gcf,'color','w') title(d(n).name) axis equal off endhttp://fractals.dyndns.org/index.php?s=main(le site n'est plus disponible) sont ajoutés dans l'archive zip.
Voila... si vous avez des remarques, des questions ou des suggestions, n'hésitez pas
Mais rappelez-vous que je ne suis pas un spécialiste dans ce domaine
Note : Ne sachant pas si ces codes sont justes, je ne les ai pas optimisés (et donc pas commentés)
Partager