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 :

besoin d'idée pour modification de géométrie


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Par défaut besoin d'idée pour modification de géométrie
    hello all


    mon but ici est de désaxer le sommet d'un empilement de cône à base elliptique

    je m'explique:
    à l'aide de l'outil meshgrid et de paramétrisation mathématique d'ellipse, j'ai obtenu mon empilement de cônes
    mon soucis est maintenant de modifier la forme de cette empilement pour avoir des sommets qui ne soient pas alignés avec l'axe de révolution originel

    ce que je voudrais en fait ce serait de "choper le sommet du cône et le décaler de l'axe et que les autres points de la géométrie suivent le mouvement" un peu comme un cliquer-glisser

    ne trouvant pas de solution pour le moment, je me serais bien basé sur les équations de Kepler pour une orbite elliptique mais au vue de la g... forme de l'équation je me demande s'il n'y a pas plus simple comme méthode

    je vous mets mon programme

    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
     
    close all;
    clear;clc;
     
     
    % les cônes
     
    Nr=10;                 %Nr et Nl sont les nombres de points du cadrillage
    Nl=21;                 %pour un cône
    Nc=10;                  %Nc = nombres de cônes
     
    Nlp = Nc*Nl;
    Nrp = Nc*Nr;
     
    X = zeros(Nlp,Nrp);
    Y = zeros(Nlp,Nrp);     %X,Y et Z sont les matrices diag par blocs contenant
    Z = zeros(Nlp,Nrp);     %tous les points des cônes (1 cône = 1 bloc Nr*Nl)
     
     
    for i=1:Nc
        r = 1.0*i;
        h = 1*i;
        m = h/r;                        %rapport de conicité
        [R,A] = meshgrid(linspace(0,r,Nr),linspace(0,2*pi,Nl)); 
        X1 = R .* cos(A);
        Y1 = sqrt(i)*R .* sin(A)+0.5*i;               
        Z1 = -m*R+1*i;                  
        X(Nl*(i-1)+1 : Nl*i , Nr*(i-1)+1 : Nr*i) = X1;
        Y(Nl*(i-1)+1 : Nl*i , Nr*(i-1)+1 : Nr*i) = Y1;          
        Z(Nl*(i-1)+1 : Nl*i , Nr*(i-1)+1 : Nr*i) = Z1;
     
    end
     
     
     
     
     
    figure
     
    plot3(X,Y,Z,'.')
    axis equal

    en attente de vos réponses
    tube

  2. #2
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Par défaut
    Bonjour,

    Si tu as un nuage de points (x,y,z), et que l'axe principal est porté par z, tu peux commencer par décaler x := x + f(z). Tu peux aussi le coupler avec une rotation progressive (x,y)= R( (x,y) , alpha(z) ) si tu veux que ca s'enroule.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Par défaut
    je ne suis pas sure d'avoir compris ta réponse vv33d
    ni de pouvoir l'appliquer

    si tu as un exemple je suis preneur

    j'avoue être un peu dans le flou quant à ta solution

  4. #4
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Par défaut
    Par exemple, à la suite de ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    XX= X;YY= Y; ZZ= Z;
    f= @(x) x.^2;
    f= @sqrt;
    XX= XX+ f(ZZ);
    plot3(XX,YY,ZZ,'.')
    la rotation est un poil plus fatiguante à écrire. Dis moi déjà si c'est ce genre d'effets que tu cherches : les points sont décalés sur l'axe des X, d'autant plus qu'ils sont haut (Z grand). En jouant sur la fonction f, tu obtiens différents types d'étirement

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Par défaut
    yes ca commence un peu à ressembler a ce que je recherche, à ceci près que j'aimerais d'abord que les points soient alignés à la verticale

    par contre, je ne comprends pas trop ta syntaxe ( surement car je débute)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    f= @(x) x.^2;
    f= @sqrt;
    XX= XX+ f(ZZ);
    notamment l'utilisation du @

    si tu pouvais me l'expliquer, it would be nice

  6. #6
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Par défaut
    Le @ sert à définir une fonction "en ligne" (équivalent du lambda en python).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    f= @(x) x.^2; % fonction x |-> x.^2
    f(1:10)
    f= @sqrt;       % fonction sqrt
    f(1:10)
    x= rand(5,3); f= @(d)mean(x,d); % fonction partielle qui a la dimension (1 ou 2, ie ligne ou colonne) associe la somme de x (variable fixé dans le workspace) suivant la dimension d
    f(1)
    f(2)
    à ceci près que j'aimerais d'abord que les points soient alignés à la verticale
    la je comprends plus. Si tu tires suivant un vecteur (autre que l'axe z), ca va forcément désaligner les verticales des points ?!

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/04/2009, 21h47
  2. Besoin d'idée pour projet réseau en C
    Par king_neo2001 dans le forum Réseau
    Réponses: 23
    Dernier message: 21/05/2007, 22h03
  3. Besoin d'idées pour macro word
    Par christel91 dans le forum VBA Word
    Réponses: 9
    Dernier message: 29/11/2006, 09h47
  4. Besoin d'aide pour modif script
    Par Abdias dans le forum Langage
    Réponses: 5
    Dernier message: 12/10/2006, 07h00
  5. Besoin da'ide pour le Déploiment d'une Application VB6 sur un Serveur d'application
    Par blowlagoon dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 02/08/2006, 23h24

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