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

3D Java Discussion :

construire un nuage sphèrique avec des points


Sujet :

3D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 160
    Par défaut construire un nuage sphèrique avec des points
    Salut les gars
    comme l'indique le titre , je veux bien construire un nuage de points qui prends la forme d'une shpère , quelque soit le nombre des points, je ne sais pas mais surement il y a un algorithme qui fait ça, sinon ça sera un bon exercice pour les doués en 3D !!
    je veux dire par des points des positions avec les vecteurs, voilà un bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for(int i = 0; i < Tableau.length ; i++){
            		   // knot point
     
            	       t3dKnot = new Transform3D();
     
     
            	       Vector3f pos = new Vector3f( x, y , z);
     
            	        t3dKnot.set (pos);
     
            	       TransformGroup k6TransformGroup = new TransformGroup(t3dKnot);
    }
    plus clairement, comment calculer les x,y et z en fonction de i (je suppose) de telle façon obtenir un nuage sphérique des points,
    moi je cherche toujours de mon coté , je vous mets au courant si je trouve la solution
    merciiiiiiiiii

  2. #2
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Salut,

    Une petite recherche sur gogole te sort des pages en pagaille...

    Celle-là par exemple, dont le lien est issu de celle-ci
    L'algo étant relativement simple, faut tester (ce n'est pas que je doute, mais...)

    Par contre il faudrait préciser comment tu veux les répartir tes points... régulièrement, à iso-potentiel, en spirale... parce que sinon on en met la moitié au pole nord, et l'autre au pole sud!
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 160
    Par défaut
    Merci pour ta réponse vraiment rapide
    mais moi aussi j'ai trouvé plein d'algo qui parle de ça , mais j'arrive pas à le convertir en java avec des attributs x,y et z comme je les ai besoin dans mon code,
    par exemple si on prend ce que tu viens de m'envoyer :
    for k=1 to N do
    h = -1 + 2*(k-1)/(N-1)
    theta[k] = arccos(h)
    if k=1 or k=N then phi[k] = 0
    else phi[k] = (phi[k-1] + 3.6/sqrt(N*(1-h^2))) mod (2*pi)
    endfor

    c koi theta, arccos, phi, sqrt !?? et ils sont ou les x,y et z !!
    sinon comment ça s'ecrit en java ?

    merci pour ton aide

  4. #4
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Citation Envoyé par amine84 Voir le message
    c koi theta, [...] phi
    coordonnées sphériques, c'est marqué dans les explications...

    Citation Envoyé par amine84 Voir le message
    c koi [...] arccos, [...] sqrt !??
    Euh... tu plaisantes là ou tu es sérieux? google si tu es sérieux, ou n'importe quel cours d'info sinon

    Citation Envoyé par amine84 Voir le message
    et ils sont ou les x,y et z !!
    In Cartesian coordinates the required point on a sphere of radius 1 is
    (cos(theta)*sin(phi), sin(theta)*sin(phi), cos(phi))

    Citation Envoyé par amine84 Voir le message
    sinon comment ça s'ecrit en java ?
    L'algo se compose d'une boucle avec quelques opérations arithmétiques. Tu devrais au moins être capable de nous pondre une base de code... (en plus clair, on ne va pas bosser à ta place, mais on t'aidera si tu coinces )
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 160
    Par défaut
    Ok merci pour tes remarques,
    voilà ma traduction du l'algo en java:
    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
    Double theta = new Double(30) ;
            	  Double phi = new Double(30);
            	  for(int i = 1; i <= N ; i++){
            		   // knot point 6
     
            	       t3dKnot = new Transform3D();
            	       Double x ;
            	       Double y ;
            	       Double z ;
     
     
     
            	       int h = -1 + 2*(i-1)/(N-1);
            	       System.out.println(">>>>>>>>>>>>>>>>>>>>>> h" + h);
            	       theta = Math.acos(h);
            	       if ( i == 1 || i == N ) { phi = new Double(0);}
            	       else phi = (phi + 3.6/Math.sqrt(N*(1-h*h))) % (2 * 3.14);
     
            	       System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>> theta  :" + theta);
            	       System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>> phi :" + phi);
            	       x = Math.cos(theta) * Math.sin(phi);
            	       y = Math.sin(theta)* Math.sin(phi);
            	       z = Math.cos(phi);
            	       System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>> y :" + y.toString());
            	       System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>> z :" + z.toString());
            	       Vector3f pos6 = new Vector3f( x.intValue(), y.intValue()*10 , z.intValue()*10);
            	       t3dKnot.set (pos6);
    }
    Il y a pas une erreur de compilation, mais lorsque j'execute le code, il y a deux points qui sont bien classés(la première et la dernière ) , mais tout le reste viennent au même point , j'ai essayé de debugueret j'ai remarqué que les autres points ont valeur NaN pour le phi !!!

    voilà le console
    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
    >>>>>>>>>>>>>>>>>>>>>> h-1
    >>>>>>>>>>>>>>>>>>>>>>>>>> theta  :3.141592653589793
    >>>>>>>>>>>>>>>>>>>>>>>>>> phi :0.0
    >>>>>>>>>>>>>>>>>>>>>>>>>> y :0.0
    >>>>>>>>>>>>>>>>>>>>>>>>>> z :1.0
    >>>>>>>>>>>>>>>>>>>>>> h-1
    >>>>>>>>>>>>>>>>>>>>>>>>>> theta  :3.141592653589793
    >>>>>>>>>>>>>>>>>>>>>>>>>> phi :NaN
    >>>>>>>>>>>>>>>>>>>>>>>>>> y :NaN
    >>>>>>>>>>>>>>>>>>>>>>>>>> z :NaN
    >>>>>>>>>>>>>>>>>>>>>> h-1
    >>>>>>>>>>>>>>>>>>>>>>>>>> theta  :3.141592653589793
    >>>>>>>>>>>>>>>>>>>>>>>>>> phi :NaN
    >>>>>>>>>>>>>>>>>>>>>>>>>> y :NaN
    >>>>>>>>>>>>>>>>>>>>>>>>>> z :NaN
    >>>>>>>>>>>>>>>>>>>>>> h-1
    >>>>>>>>>>>>>>>>>>>>>>>>>> theta  :3.141592653589793
    >>>>>>>>>>>>>>>>>>>>>>>>>> phi :NaN
    >>>>>>>>>>>>>>>>>>>>>>>>>> y :NaN
    >>>>>>>>>>>>>>>>>>>>>>>>>> z :NaN
    >>>>>>>>>>>>>>>>>>>>>> h0
    >>>>>>>>>>>>>>>>>>>>>>>>>> theta  :1.5707963267948966
    >>>>>>>>>>>>>>>>>>>>>>>>>> phi :NaN
    >>>>>>>>>>>>>>>>>>>>>>>>>> y :NaN
    >>>>>>>>>>>>>>>>>>>>>>>>>> z :NaN
    >>>>>>>>>>>>>>>>>>>>>> h0
    >>>>>>>>>>>>>>>>>>>>>>>>>> theta  :1.5707963267948966
    >>>>>>>>>>>>>>>>>>>>>>>>>> phi :NaN
    >>>>>>>>>>>>>>>>>>>>>>>>>> y :NaN
    >>>>>>>>>>>>>>>>>>>>>>>>>> z :NaN
    >>>>>>>>>>>>>>>>>>>>>> h0
    >>>>>>>>>>>>>>>>>>>>>>>>>> theta  :1.5707963267948966
    >>>>>>>>>>>>>>>>>>>>>>>>>> phi :NaN
    >>>>>>>>>>>>>>>>>>>>>>>>>> y :NaN
    >>>>>>>>>>>>>>>>>>>>>>>>>> z :NaN
    >>>>>>>>>>>>>>>>>>>>>> h1
    >>>>>>>>>>>>>>>>>>>>>>>>>> theta  :0.0
    >>>>>>>>>>>>>>>>>>>>>>>>>> phi :0.0
    >>>>>>>>>>>>>>>>>>>>>>>>>> y :0.0
    >>>>>>>>>>>>>>>>>>>>>>>>>> z :1.0
    Pourtant j'ai appliqué l'algo tel qu'il est !!, est ce que il y a pas une idée SVP

  6. #6
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Citation Envoyé par amine84 Voir le message
    Pourtant j'ai appliqué l'algo tel qu'il est !!
    Presque...

    Ca, ça aurait dû te mettre sur la voie:
    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
    >>>>>>>>>>>>>>>>>>>>>> h-1
    [...]
    >>>>>>>>>>>>>>>>>>>>>> h-1
    [...]
    >>>>>>>>>>>>>>>>>>>>>> h-1
    [...]
    >>>>>>>>>>>>>>>>>>>>>> h-1
    [...]
    >>>>>>>>>>>>>>>>>>>>>> h0
    [...]
    >>>>>>>>>>>>>>>>>>>>>> h0
    [...]
    >>>>>>>>>>>>>>>>>>>>>> h0
    [...]
    >>>>>>>>>>>>>>>>>>>>>> h1
    tu as déclaéré h en tant qu'entier... en prime tu as un méchante division entière pour le calcul... donc ça ne fonctionne pas.

    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int h = -1 + 2*(i-1)/(N-1);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double h = -1 + (2.0*(i-1))/(N-1);
    Tu auras déjà tous tes points. A voir ensuite si ils se répartissent comme il faut.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

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

Discussions similaires

  1. une courbe avec des points
    Par Lost in dans le forum MATLAB
    Réponses: 3
    Dernier message: 17/03/2008, 17h48
  2. Message d'erreur avec des points d'interrogation
    Par Tintou dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/01/2008, 09h34
  3. [Prototype] Requête Ajax ne passe pas avec des points d'interrogation
    Par Romalafrite dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 09/12/2007, 22h31
  4. [Débutant] Scinder une chaine avec des points
    Par poiwalt dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 06/07/2007, 20h09
  5. Réponses: 24
    Dernier message: 01/06/2007, 21h37

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