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

Algorithmes et structures de données Discussion :

Tube a partir de polysegments


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 50
    Points : 58
    Points
    58
    Par défaut Tube a partir de polysegments
    Bonjour,

    voila, j'aimerai realiser un programme qui me permettrait, a partir d'un liste de points representant une courbe, de construire un tube autour de cette ligne.

    Avant de m'y mettre, j'aimerai savoir s'il existe des algorithmes pour ce genre de choses ?

    merci,

    Seb

  2. #2
    Membre averti
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Points : 444
    Points
    444
    Par défaut
    Si j'ai bien compris :
    1) Tu as une liste de points
    2) Pour toi c'est points apartiennent à une courbe
    3) Tu veux dessiner, ou calculer cette courbe
    4) Tu veux dessiner un tube autour de cette courbe

    Pour le point (3) reseigne toi sur l'interpolation, tout dépand ensuite de ton niveau en mathématique, et de ta courbe. Une interpolation un peu grosiére, peu être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Soit P(p1,...,pn) l'ensemble des points connus de la courbes calssé par l'orde des absicces croissants.
    Pour tout i tel que 1 <= i <= n-2 faire
     | Soit m1  le point milieu de p(i) et p(i+1)
     | Soit m2  le point milieu de p(i+1) et p(i+2)
     | Soit a,b tels que la droite Y=aX+b passe par m1 et m2
     | Soit c = p(i+1).y-(a/2)*p(i+1).x²-b*p(i+1)
     | la courbe sur l'intervale [p(i).x,p(i+2).x[ est : Y = (a/2)*X² + b*X + c
    Fin Pour
    Ceci est justifié, si on considére, que la courbe est des morceaux de parabolles, et que le vecteur m1->m2 estle vecteur directeur de la tangente de la courbe en p(i+1).

    JHelp+
    Pour avoir une réponse efficace :
    1) Soyez précis dans vos questions
    2) Choisssez bien votre forum
    3) Consultez la FAQ et la doc avant

  3. #3
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 50
    Points : 58
    Points
    58
    Par défaut
    merci de ta reponse,

    mais je me suis mal exprime, car j'envisage des tubes en 3d, genre tuyauterie ...

    pour chaque point de ma courbe, il faudrait que je calcule les coordonnees des points appartenant a la section circulaire du tube en ce point. Ce cercle est orthogonal au plan definit par le point considere, son precedent et son suivant ...

    j'espere que c'est plus clair maintenant,

    Seb

  4. #4
    Membre averti
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Points : 444
    Points
    444
    Par défaut
    Je vois dans ce cas peut-être ceci te conviendrait mieux :

    Soit P-1, P et P+1 tes trois points.
    Soit V1 le vecteur P --> P-1
    Soit V2 le Vecteur P --> P+1
    Soit V = V1 x V2 (x : produit vectoriel)
    Soit O l'isobarycentre de P-1, P et P+1
    Soit r la distance entre O et P
    Soit ax langle entre V et l'axe des X
    Soit ay langle entre V et l'axe des Y
    Soit az langle entre V et l'axe des Z

    Dans le plan XY, l'equation du cerlce de centre (0,0,0) de rayon 1 :
    X = cos(t)
    Y = sin(t)
    Z = 0
    De rayon r
    X = r*cos(t)
    Y = r*sin(t)
    Z = 0

    Ensuite tu multiplies ton vecteur par les matrices :
    1 0 0
    0 cos(ax) sin(ax) (ou -sin j'ai un doute)
    0 -sin(ax) cos(ax) (ou sin, si audessus c'était -sin)
    Rotation selon l'axe des X

    cos(ay) 0 sin(ay) (ou -sin j'ai un doute)
    0 1 0
    -sin(ay) 0 cos(ay) (ou sin, si audessus c'était -sin)
    Rotation selon l'axe des Y

    cos(az) sin(az) 0 (ou -sin j'ai un doute)
    -sin(az) cos(az) 0 (ou sin, si audessus c'était -sin)
    0 0 1
    Rotation selon l'axe des Z

    Et tu obtiens l'équation de ton cercle. Désolé j'ai pas le temps de dévelloppé les calculs.

    JHelp
    Pour avoir une réponse efficace :
    1) Soyez précis dans vos questions
    2) Choisssez bien votre forum
    3) Consultez la FAQ et la doc avant

  5. #5
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 50
    Points : 58
    Points
    58
    Par défaut
    ok, merci pour ton aide, je vais developper tout ca ...

    bye,

    Seb

Discussions similaires

  1. Créer un tube à partir de coordonnées d'un chemin
    Par thibault marsan dans le forum MATLAB
    Réponses: 5
    Dernier message: 11/12/2014, 20h11
  2. Pop-up d'une dialog box a partir d'un bouton
    Par bobbyjack dans le forum MFC
    Réponses: 21
    Dernier message: 13/09/2005, 15h32
  3. Réponses: 1
    Dernier message: 01/08/2002, 21h09
  4. Réponses: 3
    Dernier message: 12/06/2002, 19h03
  5. Réponses: 3
    Dernier message: 19/04/2002, 00h11

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