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

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Points : 14
    Points
    14
    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 éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    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 à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Points : 14
    Points
    14
    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 éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    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 à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Points : 14
    Points
    14
    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 éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    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 ?!

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    en fait mon idée est de déplacer les sommets dans leur plan (X,Y)

    et pour les avoir aligner, il te suffirait d'appliquer ce déplacement à chaque sommet
    du style : sommet 1= sommet 1 + vecteur AB
    sommet 2= sommet 2 + vecteur AB
    ...
    avec vecteur AB compris dans le plan (X,Y)

    le problème que je rencontre est le suivant :
    - il faut que la base reste tel quel
    - il faut que les autres points "suivent le mouvement" ( ce point est respecté dans ta formulation)

  8. #8
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Ma solution déplace chaque point d'un vecteur différent. Tu veux que chaque cône soit déplacé par le même vecteur, en autorisant les cônes différents à avoir des déplacement différents ?

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    pour l'instant, tous les cônes au même déplacement, après je verrais pour la suite

  10. #10
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Si tous les cônes ont le même déplacement, et que chaque cône est indéformable, ça s'appelle une translation et il suffit d'ajouter un vecteur fixe à tous les points...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    t= [1 2 0.5]; % vecteur de translation
    XX= XX+ t(1);
    YY= YY + t(2);
    ZZ= ZZ+ t(3);

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    haha c'est pas ça ^^

    ca ne peux pas être une translation car la base doit rester dans sa position initiale

    je vais expliquer le problème générale, peut être ca nous permettra de mieux nous comprendre
    j'essaie de modéliser l'intérieur d'un tronc d'arbre et d'étudier l'angle du fil à la surface d'une planche extraite de ce tronc
    l'angle du fil est en fait du à la croissance de l'arbre qui pour grandir, superposent année après année des couches de bois

    la frontière entre deux couches est appelée cerne et c'est ce que je modélise en traçant les cônes

    dans un cadre idéal, ces cônes sont coaxiaux et à base circulaire (ca j'ai dans mon prgm)

    dans un second temps, et cela du aux conditions clim (vent, temp ...) l'arbre pousse de travers. les cônes se désaxent pour permettre de compenser l'impact des conditions extérieures et le rendre plus résistant car plus les couches sont fines, plus il est résistant (ou inversement, mais la n'est pas tout le problème)

    du coup la base reste la même mais lors de la croissance, on a cette déformation de la géométrie que je souhaite modéliser

  12. #12
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Donc chaque cône est déformable (par les conditions). Donc un truc du genre x= f(z), avec f(0)= 0 (base figée), au sein de chaque cône semble bien. Mais du coup, pourquoi y'a-t-il plusieurs cônes ? Différents rythmes de croissance ou différentes dates ?

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    oui chaque cône est déformable

    et un cône = un cycle de croissance = un printemps (car c'est à cette époque que ton arbre poussse, grosso modo, et modulo le climat )

  14. #14
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    et donc la base de chaque cône coïncide avec le sommet du cône précédent ?

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    non les bases sont toutes à l'altitude 0

    sinon ta base ne serait pas pas assez solide et l'arbre casserait
    en fait la couche périphérique génère la couche suivante et devient inactive après ce cycle

    la nouvelle couche génèrera à son tour un autre couche et deviendra inactive

    tu peux te figurer cela en imaginant que tu poses un cône pour ta glace "l'italienne" sur une table puis tu rajoutes par dessus un autre avec un diamètre et une hauteur un peu plus important et ainsi de suite

  16. #16
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Donc si je comprends bien, les conditions de l'année t-1 continueront à influencer le développement sur l'année t. La direction prise l'année t dépend du vent sur l'année t, mais aussi de la direction prise sur l'année t-1 ?

    Si tel est le cas, cela veut dire que les vecteurs de déplacement de chaque cône sont liés ce qui complique le problème.

  17. #17
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    ce problème là tu peux le contourner aisément en étudiant la conicité de l'arbre donc en soit il n'est pas très important

    l'idée ici est de maîtriser la variation de forme des cônes en déplaçant le sommet et l'ensemble des points n'appartenant pas à la base

  18. #18
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Pas sur d'avoir tout saisi. Si tu par exemple décales le sommet d'un cône sans décaler la base du cône suivant

    Pour revenir à matlab. Il faut que tu conserves pour chaque point l'indice du cône auquel il appartient (disons une matrice C) puis que tu décales chaque point en fonction de la hauteur dans son cône, via une fonction f(z) valant 0 en 0.

  19. #19
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    je pense qu'un dessin sera plus parlant

    l'image fournit est en vue du dessus et pour un cône

    Nom : idée excentricité.JPG
Affichages : 182
Taille : 30,0 Ko



    j'espère que ce sera plus parlant

    ps: les j'ai modélisé les arrêtes à l'arrache bien entendu

  20. #20
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Chaque arrête doit être tournée d'un angle différent. Du coup plutôt que de tout tourner toi même, je générerai directement les arrêtes du cône "excentrique". Pour chaque cône,
    1/ calcul du centre excentré et des points sur la base
    2/ calcul des équations de chaque droite reliant sommet et base
    3/ calcul de quelques point sur ces droites.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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