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 :

Dépliage d'objet 3D maillé


Sujet :

Algorithmes et structures de données

  1. #21
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Seulement, j'ai beau essayer de trouver des astuces en vain.
    Tu t'apprêtes à aplatir le triangle T1 ABC sur le triangle T2. ABD
    Tu choisis un repère tel qu' un des axes (celui que tu veux) soit le côté commun.
    Tu es libre du choix des deux autres vecteurs directeurs, pourvu que tu arrives à une base orthonormale.
    Je te propose d'utiliser le procédé de SCHMIDT.
    Tu prends comme premier vecteur le vecteur normé colinéaire à AB (côré commun). Tu prend comme second vecteur AC- AH ou H est la projection orthogonale de C sur (AB) que tu divises par sa norme. Pour dernier vecteur tu prends le produit vectoriel des deux premiers.
    Dans un tel repère C a une seconde coordonnée positive.
    Par la suite tu a deux rotations possibles amenant ABD dans le plan ABC soit D' et D'' les images de D par ces deux rotations. Tu conserves celle pour laquelle la seconde coordonnée de l'image de D est négative.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  2. #22
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 11
    Points
    11
    Par défaut
    Excusez-moi, j'ai un petit problème pour positionner mon côté commun à mon axe Y.

    Je faisais comme suit:
    Soit C mon côté à positionner
    alpha = angle entre C et l'axe X,
    puis C' = MatY * C d'angle alpha
    beta = angle entre C' et l'axe Y,
    puis C" = MatZ * C' d'angle beta
    teta = angle entre C'' et l'axe Z,
    puis C" = MatX * C' d'angle teta

    et avec les différentes possibilités de signes, je me retrouve à 8 cas à traiter. Tout en sachant qu'après chaque multiplication, si les coordonnées en X et Z sont toutes les deux nulles, on est sur l'axe Z et On s'arrête là.

    LE souci, c'est que ca ne marche pas pour tous les cas.

    Je voulais utiliser le principe des matrices d'Euler, mais ça ne marche pas.

  3. #23
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 11
    Points
    11
    Par défaut
    la dernière ligne est C''' = MatX * C"

  4. #24
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 11
    Points
    11
    Par défaut
    Je crois que je me suis trompée dès le départ dans ma façon d'amener mon côté commun en Y.

    Je pense que je vais créer un nouveau repère orthonormé avec pour origine une intersection entre T1 et T2 (les triangles) et pour axe Y (je prends le même pour ne pas m'embrouiller de mon côté), le côté commun

    Ensuite je vais faire un simple changement de repère avec matrice de passage et tout le tralala. j'espère que ça marchera cette fois ci

  5. #25
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Je ne comprends pas pourquoi tu te taraudes avec des questions d'angles.
    Si tu veux on va déplier ensemble un tétraèdre régulier.
    Voici les sommets
    A(1,0,0)
    B(-1/2, rac(3)/2,0)
    C(-1/2,-rac(3)/2,0)
    D(0,0,rac(2)) ... à vérifier mais je crois que c'est bon
    On prend pour T0 le triangle de cote nulle T0=ABC
    On prend pour T1 le triangle ABD
    On va amener T1 dans le plan T0
    L'axe de la rotation est donc la droite (AB). On pourrait calculer l'angle mais on ne le fait pas.
    Premier travail. Trouver un repère orthonormé (i,j,k) tel que i soit colinéaire à AB
    le plan (i,j) est le plan de T0 et k= produit vectoriel (i,j).
    Peux tu calculer rapidement ce repère ?
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  6. #26
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Il y avait une erreur pour la cote de D, mais ça n'a aucune importance pour notre sujet.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  7. #27
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 11
    Points
    11
    Par défaut
    je sais le calculer mais là je n'ai pas de calculette sous la main.

    en gros, tu es entrain de me dire que je me prends la tête pour rien. C'est certainement vrai. Je vais faire ta méthode, sans changement de repère mais en créant un à chaque fois que je rencontre 2 triangles joints et je te dirai ce que j'obtiens.

  8. #28
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    je sais le calculer mais là je n'ai pas de calculette sous la main.
    Sûr qu'il faut une calculette ???
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  9. #29
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 11
    Points
    11
    Par défaut
    peut-être pas mais là, ma tête va exploser. Je verrai ça demain

  10. #30
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Bon, alors va te reposer et à demain.
    Je te fais cadeau du repère:
    i=(-rac(3)/2,1/2,0)
    j=(-1/2,-rac(3)/2,0)
    k=(0,0,1)
    Quand tu y verras plus clair dis moi quelle est la forme générale de la matrice d'une rotation vectorielle d'axe i, dans la base (i,j,k).
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  11. #31
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 11
    Points
    11
    Par défaut
    A(1,0,0) B(-0.5, racine(3)/2, 0) C(-0.5, -racine(3)/2, 0)

    i = vec(AB) / ||AB|| = (-1.5, racine(3)/2, 0)

    j = vec(AC) - (<vec(i), vec(AC)> / <vec(i), vec(i)>) * vec(i)
    = vec(AC) +0.5*vec(i)
    = (-0.75, -racine(3)/4, 0)
    = (-3/4, -racine(3)/4, 0)

    k = i^j = (0,0,0)

    C'est que ca me donne. Mais j'ai pu me tromper dans les calculs. Mais le principe y est.

    Mais de toutes les façons, A,B,C,D changent en fonction de mon objet. Mais j'ai compris ce que tu veux dire.

  12. #32
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Citation Envoyé par 3DGirl
    Mais j'ai pu me tromper dans les calculs. Mais le principe y est.
    Oui, tu t'es trompée. Les maths c'est pas seulement une question de principe.
    Une formule est exacte (la premiere).
    Pas la seconde:
    j = vec(AC) - (<vec(i), vec(AC)> / <vec(i), vec(i)>) * vec(i)
    C'est j=(vec(AC)-<i,vec(AC>i)/||(vec(AC)-<i,vec(AC>i) ||
    De plus tu me donnes une base avec un vecteur k nul!
    Ça c'est pas bien.
    Tu veux bien reprendre le tout et voir si ça concorde avec mes propres résultats que j'ai posté hier?
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  13. #33
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 11
    Points
    11
    Par défaut
    j = vec(AC) - (<vec(i), vec(AC)> / <vec(i), vec(i)>) * vec(i)

  14. #34
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 11
    Points
    11
    Par défaut
    j = vec(AC) - (<vec(i), vec(AC)> / <vec(i), vec(i)>) * vec(i)
    Je ne vois pas où est le problème dans ma formule.

    d'après ce que mes souvenirs et ce que j'ai pu voir

    j = vec(AC) + lambda* vec(i) où lambda est le coefficient tel que

    <j, i>=0 ou encore produit scalaire(j, i) = 0.

    Pour éviter de résoudre l'équation, lambda = -1 * <vec(i), vec(AC)>/norme(i).

    et dans mes lointains souvenirs, j'ai toujours préféré calculer directement lambda sans résoudre l'équation.

  15. #35
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 11
    Points
    11
    Par défaut
    Et si tu veux que je vérifie tes calculs, stp, il faudrait que tu me dises déjà comment tu calcules ton I.

    De quels vecteurs es-tu parti?

  16. #36
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Pour mon i je suis parti de la même formule que toi vec(AB)/||AB||, mais je n'ai pas trouvé la même chose.
    j = vec(AC) - (<vec(i), vec(AC)> / <vec(i), vec(i)>) * vec(i)
    i étant unitaire <vec(i),vec(i)>=1 je ne vois pas l'utilité de diviser par un scalaire qui est égal à 1.
    Procédé de Schmidt
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  17. #37
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 11
    Points
    11
    Par défaut
    Dans ton cas précis, effectivement la norme du vecteur de départ vaut 1 mais ce n'est toujours le cas.

    Schmidt te crée une base orthogonale certes, mais normalisée aussi.

    regarde mon lien ci dessous stp, le procédé est beaucoup plus explicite.

    http://fr.wikipedia.org/wiki/Orthono...ion_de_Schmidt

  18. #38
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 11
    Points
    11
    Par défaut
    Bon, alors va te reposer et à demain.
    Je te fais cadeau du repère:
    i=(-rac(3)/2,1/2,0)
    j=(-1/2,-rac(3)/2,0)
    k=(0,0,1)
    Quand tu y verras plus clair dis moi quelle est la forme générale de la matrice d'une rotation vectorielle d'axe i, dans la base (i,j,k).
    Je ne comprends pas comment tu peux être parti du même A(1,0,0) et du même B(-0.5, racine(3)/2, 0) que moi et obtenir un I différent?

    Mon I = vec(AB) et ensuite je normalise mais vec(AB) = coord(B) - coord(A) et déjà là, on n'a pas la même chose. Toi, tu obtiens
    vec(AB) = i=(-rac(3)/2,1/2,0)

    Tu as dû te tromper dans tes coordonnées. Parce que moi j'ai fais le procédé en partant des coordonnées que tu m'as donné hier.

  19. #39
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    J'obtiens vec(AB)=(-3/2,rac(3)/2,0) OUI/NON ?
    J'obtiens ||AB||= rac(3) OUI/NON ?
    Donc i=(-rac(3)/2,1/2,0) OUI/NON?
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  20. #40
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 11
    Points
    11
    Par défaut
    oki oki.

    Comme je me suis trompée et que t'as dû vérifier 1million de fois, je suppose que tu as les bons résultats

Discussions similaires

  1. [Débutant] Courbure gaussienne objets 3D maillés
    Par Ssnow dans le forum MATLAB
    Réponses: 0
    Dernier message: 07/03/2014, 11h39
  2. codage objet
    Par charly dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 22/08/2002, 16h49
  3. Importer des objets de 3dsMax
    Par Anonymous dans le forum OpenGL
    Réponses: 3
    Dernier message: 06/05/2002, 13h53
  4. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h41

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