Affichage 3D sous matlab

Discutez d'informatique ici !
Clise
Membre Relatif
Messages: 221
Enregistré le: 16 Mai 2008, 22:59

affichage 3D sous matlab

par Clise » 15 Mai 2009, 00: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.



Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6608
Enregistré le: 22 Nov 2007, 14:00

par fatal_error » 15 Mai 2009, 08: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 :)

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6608
Enregistré le: 22 Nov 2007, 14:00

par fatal_error » 15 Mai 2009, 09: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, 23:35

par bombastus » 16 Mai 2009, 00: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, 22:59

par Clise » 16 Mai 2009, 18: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 !

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6608
Enregistré le: 22 Nov 2007, 14:00

par fatal_error » 16 Mai 2009, 23:46

avec plaisir :-)
la vie est une fête :)

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite