IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Animation & Objet fixe


Sujet :

MATLAB

  1. #1
    Invité
    Invité(e)
    Par défaut Animation & Objet fixe
    Bonjour,
    Voilà je dispose d'une surface et d'une animation d'un plan qui varie selon l'axe des y.
    Je souhaiterais juste afficher ma surface (fixe) et le plan qui varie en même temps.
    Donc dans la boucle de mon animation j'ai ajouté un "hold on" et "hold off" et entre les deux j'ai l'affichage du plan et de ma surface (à chaque fois).
    Seulement à l'affichage, j'obtiens ma surface (ok) et tous les plans qui s'affichent un par un, alors que je ne veux qu'un plan par frames.
    Question(s) :
    1) comment puis-je remédier à ce problème ?
    2) N'y a t il pas un moyen d'afficher ma surface une bonne fois pour toute car ici j'ai un affichage par frame...
    Merci d'avance.

  2. #2
    Membre chevronné
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Par défaut
    si on pouvait avoir le code, ce serait plus facil pour voir où ça coince exactement...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Désolé, voici le code

    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
    function [] = plan(up)
    
    t = -40:40;
    s = -40:40;
    
    [t,s]=meshgrid(t,s);
    
    m = moviein(up+1);% animation
    
    for i=0:1:up
    
    
    hold on
        
    x = t;
    z = s;
    y = i + 0.*t + 0.*s; le plan qui varie
    
    view(45, 10);
    
    surf(x,y,z,'EdgeColor','none','FaceColor','b')
    
    Surface(27,9); ma surface en question
    
    alpha(.6)
    xlabel('x');ylabel('y');zlabel('z');
    set(gca,'XLim',[-40 40],'YLim',[-40 40],'ZLim',[-40 40]);
    pause(0.5)
    
    hold off
    
    m(:,i+1)=getframe;
    
    end

  4. #4
    Membre chevronné
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Par défaut
    Tout d'abord, es-tu sûr que ton code est correct et fonctionne?
    Parce que la fonction 'surface' ne s'utilise pas de cette manière. A la place du 29, c'est une matrice qu'il faut avoir.
    Ensuite, il ne faut pas oublier les '%' lorsqu'on met des commentaires.
    Et enfin, s'écrit comme ça

  5. #5
    Invité
    Invité(e)
    Par défaut
    D'accord pour le 'getframe', néanmoins je pense que le reste est bon.
    J'ai mis "surface" pour simplifier ma fonction s'appelle autrement et les paramètres sont bons.
    Pour les commentaires en rouges ils ont été écrit après avoir copier le code sur mon post.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Personne n'a d'idée , j'ai essayé avec les fonctions clc et clf mais ça ne donne pas de résultats concluants...

  7. #7
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    Salut,

    essayes ceci :

    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
    function [] = plan(up)
     
    t = -40:40;
    s = -40:40;
     
    [t,s]=meshgrid(t,s);
     
    m = moviein(up+1);% animation
     
    for i=0:1:up
        hold on
        x = t;
        z = s;
        y = i + 0.*t + 0.*s; %le plan qui varie
     
        view(45, 10);
     
        if i==0
            S_handle = surf(x,y,z,'EdgeColor','none','FaceColor','b')
        else
            set(S_handle,'YDATA',y)
        end
     
        Surface(27,9); %ma surface en question
     
        alpha(.6)
        xlabel('x');ylabel('y');zlabel('z');
        set(gca,'XLim',[-40 40],'YLim',[-40 40],'ZLim',[-40 40]);
        pause(0.5)
        hold off
        m(:,i+1)=getframe;
    end
    ++

  8. #8
    Invité
    Invité(e)
    Par défaut
    Ah ça rend déjà mieux merci ! ^^
    Par contre ma surface se répète et je perd la transparence...

  9. #9
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    Tant mieux ,

    essayes ceci :

    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
     
    function [] = plan(up)
     
    t = -40:40;
    s = -40:40;
     
    [t,s]=meshgrid(t,s);
     
    m = moviein(up+1);% animation
     
    for i=0:1:up
        x = t;
        z = s;
        y = i + 0.*t + 0.*s; %le plan qui varie
        view(45, 10);
     
        if i==0
            S_handle = surf(x,y,z,'EdgeColor','none','FaceColor','b')
            Surface(27,9); %ma surface en question
            alpha(.6)
            xlabel('x');ylabel('y');zlabel('z');
            set(gca,'XLim',[-40 40],'YLim',[-40 40],'ZLim',[-40 40]);
        else
            set(S_handle,'YDATA',y)
        end
     
        m(:,i+1)=getframe;
        pause(0.5)
    end
    ++

  10. #10
    Invité
    Invité(e)
    Par défaut
    Excellent !!! Merci beaucoup.
    Bonne (fin de) journée.
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. "Les objets fixes seront déplacés"
    Par Currahee dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 21/10/2009, 18h46
  2. comment peut on animer un objet sur delphi?
    Par tchimou dans le forum Delphi
    Réponses: 5
    Dernier message: 12/05/2007, 00h53
  3. animer un objet
    Par jc_cornic dans le forum Flash
    Réponses: 2
    Dernier message: 17/03/2007, 21h08
  4. Comment animer un objet 3D?
    Par drcd dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 10/06/2006, 05h17
  5. [FLASH MX2004] Animé un objet 3D
    Par Ticoche dans le forum Flash
    Réponses: 2
    Dernier message: 20/11/2004, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo