Bonjour,
J'ai un petit programme sous GUI permettant d'afficher une cartographie à partir de données (X,Y,Z). Mon programme marche très bien, seulement je souhaiterais l'optimiser pour une chose particulière.
Sur le 1er interface, j'ai une listbox qui contient les fichiers dans lesquels les données (X,Y,Z) ont été chargées, et un bouton "3D" (nommé "affich_surf_pushbutton" dans le code) qui ouvre une autre fenêtre dans laquelle s'affiche la cartographie.
Mon problème, c'est que lorsqu'une carto 3D est déjà affichée, si je veux en afficher une 2ème je souhaiterais qu'une nouvelle fenêtre s'ouvre, pour avoir un aperçu des 2 cartos côte à côte. Dans mon programme, la 2ème carto s'affiche sur la même fenêtre que la 1ère.
Voici mon code pour le 1er interface où la listbox et le bouton "3D" sont contenus:
Et voici le code de la 2ème interface qui affiche la carto 3D (la fonction "surface"):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 %Affichage 3D function affich_surf_pushbutton_Callback(hObject, eventdata, handles) XYZ=handles.XYZ; %Récupération XYZ du fichier sélectionné labelXYZ=handles.labelXYZ; %Récupération labelXYZ du fichier sélectionné X=XYZ(:,1);Y=XYZ(:,2);Z=XYZ(:,3); %Attribution X Y et Z labelX=labelXYZ(1);labelY=labelXYZ(2);labelZ=labelXYZ(3);%Attribution labelX, Y et Z surface(X,Y,Z,labelX,labelY,labelZ); %Affichage carto 3D end;
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 function surface_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; %------------------- RÉCUPÉRATION DES DONNÉES X Y ET Z -------------------- x=varargin{1}; y=varargin{2}; z=varargin{3}; labelx=varargin{4}; labely=varargin{5}; labelz=varargin{6}; handles.data=[x,y,z,labelx,labely,labelz]; %------------------- AFFICHAGE CARTOGRAPHIE ------------------------------- set(handles.figure1, 'MenuBar', 'figure'); set(handles.figure1, 'ToolBar', 'figure'); %données brutes plot3(x,y,z,'+'); hold on; %répartition 3D des données Z F=TriScatteredInterp(x,y,z); [XI,YI]=meshgrid(-100:1:100,-100:1:100); ZI=F(XI,YI); h=surf(XI,YI,ZI); axis([-100 100 -100 100 min(min(ZI)) max(max(ZI))]); colorbar; set(h, 'edgecolor','none') %paramètres de l'affichage grid on; xlabel(labelx); ylabel(labely); zlabel(labelz);
Partager