Partage
  • Partager sur Facebook
  • Partager sur Twitter

Revolution

nurbs

    13 juillet 2007 à 12:05:27

    Bonjour,
    J'ai besoin d'implanter une revolution dans mom programme mais je n'arrive pas a comprendre le principe.En cherchent avec google je n'ai pas trouver d'exemple concre.Pourier vous m'expliquer comment mettre cela en place.
    • Partager sur Facebook
    • Partager sur Twitter
      13 juillet 2007 à 12:08:26

      Tu veux trianguler une surface de révolution ? Ou bien avoir une description mathématique exacte ?
      Pourquoi parles tu de NURBS ? tu veux la convertir en surface Nurbs ?

      Quelle est la nature de ta courbe de révolution ? une NURBS ? Un polynome paramétrique ? Autre ?
      • Partager sur Facebook
      • Partager sur Twitter

      Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

        13 juillet 2007 à 14:45:30

        le but c qu'a partir de n'inporte quel equise je puissse afficher un rendu 3d.

        je parle de nurbs car les chose que j'ai tropuver etait la desus mais si a une autre methone je prend.
        • Partager sur Facebook
        • Partager sur Twitter
          13 juillet 2007 à 15:07:37

          Alors soit, partons d'une courbe paramétrique (une Nurbs, une Bezier, ou une autre polynomiale) Disons une Bezier.
          Tu définis un axe central Z (axe de révolution), ainsi que ta "swept curve" f(t) -> celle qui subira la révolution. (parametrique entre 0 et 1)

          Tu te définis un "pas" vertical dv, tu procederas donc sur f(0), f(dv), f(2*dv), f(3*dv) .... f(n*dv), ... f(1)
          Pour donc un f(t) donné, tu calcules o(t) -> projection orthogonale du point f(t) sur l'axe Z.
          Tu prends le vecteur local X = f(t) - o(t) -> tu le normalises.
          Tu calcules le vecteur Y comme produit vectoriel de Z par X.
          tu obtiens une base locale o(t),X,Y,Z

          Le rayon local r(t) est la norme de f(t)-o(t)
          -> tu obtiens donc un cercle de centre o(t), de base locale X,Y, axe Z, rayon r(t)

          tu diécrétises le cercle avec une précision horizontale rh.

          Avec tous les f(0), f(dv), f(2*dv), f(3*dv) .... f(n*dv), ... f(1), tu obtiens N cercles discréisés avec le meme nombre de segments chacun
          Il suffit, pour finir, de relier chaque segment de cercles adjascents par un Quad.

          --> Tu as ta surface de rev.
          • Partager sur Facebook
          • Partager sur Twitter

          Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

          Revolution

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown