Affichage 3D sous matlab
Discutez d'informatique ici !
-
Clise
- Membre Relatif
- Messages: 221
- Enregistré le: 16 Mai 2008, 21:59
-
par Clise » 14 Mai 2009, 23:19
Bonsoir,
J'utilise Matlab pour calculer en 3D l'équation de la chaleur. Cependant j'ai des soucis de représentations.
Mon domaine est un cube. J'aimerais donc pouvoir l'afficher ou du moins les isothermes en 3D. Cependant je ne connais que les fonctions surf et contourf qui tracent en réalité des aires et pas des volumes.
J'ai effectués quelques recherches sur le web, mais rien de bien concluant. Est ce que quelqu'un pourrait m'indiquer les fonctions matlab ou un logiciel (dans lequel je pourrais exporter mes donnés) qui me permettrait d'afficher le cube comme pourrait le faire comsol.
Merci.
-
fatal_error
- Modérateur
- Messages: 6610
- Enregistré le: 22 Nov 2007, 13:00
-
par fatal_error » 15 Mai 2009, 07:03
salut,
tu peux utiliser patch. Ca trace des faces que tu definis toi même.
jor si t'as tes 8 points (définissant ton cube--1234(face bas);5678(face haut)--), tu as les faces :
f=[1 2 3 4;1 2 6 5; 1 4 5 8;1 3 7 6;4 3 7 8; 7 8 5 6];
où chaque vecteur de ta matrice f contient des points qui représentent une face.
et derriere tu as un vecteur de points X qui contient les coordonnées (3d) de chacun de tes points.
J'ai pas testé. Je pense que ca marche.
Edit : ce que j'ai proposé tend a apparemment faire un affichage 2D. Neanmoins ce lien semble repondre a tes (mes aussi =) ) attentes.
voir patch
la vie est une fête
-
fatal_error
- Modérateur
- Messages: 6610
- Enregistré le: 22 Nov 2007, 13:00
-
par fatal_error » 15 Mai 2009, 08:41
fiou.
Relativement con. Il fallait rajouter view(3)... :marteau:
- Code: Tout sélectionner
close all;
clear;
%sommets
vertices = [0 0 0;0 1 0; 1 1 0; 1 0 0;
0 0 1;0 1 1; 1 1 1; 1 0 1];
% ordre des sommets a respecter!
faces = [1 2 3 4;5 6 7 8;3 4 8 7; 1 2 6 5; 1 4 8 5; 2 3 7 6];
%tableau des couleurs. A la place j'ai mis hsv.
tcolor = [0.1 0.2 0.3;
0.4 0.4 0.5;
0.6 0.1 0.2;
0.4 0.6 0.6;
0.1 0.3 0.5;
1 1 0;
0 0 1;
1 1 0];
patch('Faces',faces,'Vertices',vertices,'FaceVertexCData',hsv(length(faces(:,1))),'FaceColor','Flat');
%display in 3D, sinon 2D par defaut
view(3);
Concernant les isothermes 3D, tu peux tout triangulariser. Mais il y a pe plus adapté pour ton cas.
la vie est une fête
-
bombastus
- Membre Complexe
- Messages: 2295
- Enregistré le: 29 Nov 2007, 22:35
-
par bombastus » 15 Mai 2009, 23:58
Salut,
patch est effectivement la fonction qui semble convenir à tes besoins,
et pour représenter tes isothermes, tu peux utiliser isosurface et isonormals avec la fonction patch (voir la doc).
-
Clise
- Membre Relatif
- Messages: 221
- Enregistré le: 16 Mai 2008, 21:59
-
par Clise » 16 Mai 2009, 17:37
Merci :we:
Je vais essayer tout ça, je vous tient au courant !
-> J'ai réussi à faire ce que je voulais avec vos indications, merci à vous deux !
-
fatal_error
- Modérateur
- Messages: 6610
- Enregistré le: 22 Nov 2007, 13:00
-
par fatal_error » 16 Mai 2009, 22:46
avec plaisir :-)
la vie est une fête
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 5 invités