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

 Java Discussion :

probleme de cast en java.Node


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 4
    Par défaut probleme de cast en java.Node
    Voici un code qui comporte aussi d autres class:



    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    import java.util.Random;
    
    import com.sun.j3d.utils.universe.*;
    
    import javax.media.j3d.*;
    
    import javax.vecmath.*;
    
    import com.sun.j3d.utils.universe.SimpleUniverse;
    
    public class FractalTerrain implements Terrain {
      private double[][] terrain;
      private double roughness, min, max;
      private int divisions;
      private Random rng;
      public FractalTerrain (int lod, double roughness) {
        this.roughness = roughness;
        this.divisions = 1 << lod;
        terrain = new double[divisions + 1][divisions + 1];
        rng = new Random ();
        terrain[0][0] = rnd ();
        terrain[0][divisions] = rnd ();
        terrain[divisions][divisions] = rnd ();
        terrain[divisions][0] = rnd ();
        double rough = roughness;
        for (int i = 0; i < lod; ++ i) {
          int q = 1 << i, r = 1 << (lod - i), s = r >> 1;
          for (int j = 0; j < divisions; j += r)
            for (int k = 0; k < divisions; k += r)
              diamond (j, k, r, rough);
          if (s > 0)
            for (int j = 0; j <= divisions; j += s)
              for (int k = (j + s) % r; k <= divisions; k += r)
                square (j - s, k - s, r, rough);
          rough *= roughness;
        }
        min = max = terrain[0][0];
        for (int i = 0; i <= divisions; ++ i)
          for (int j = 0; j <= divisions; ++ j)
            if (terrain[i][j] < min) min = terrain[i][j];
            else if (terrain[i][j] > max) max = terrain[i][j];
      }
      private void diamond (int x, int y, int side, double scale) {
        if (side > 1) {
          int half = side / 2;
          double avg = (terrain[x][y] + terrain[x + side][y] +
            terrain[x + side][y + side] + terrain[x][y + side]) * 0.25;
          terrain[x + half][y + half] = avg + rnd () * scale;
        }
      }
      private void square (int x, int y, int side, double scale) {
        int half = side / 2;
        double avg = 0.0, sum = 0.0;
        if (x >= 0)
        { avg += terrain[x][y + half]; sum += 1.0; }
        if (y >= 0)
        { avg += terrain[x + half][y]; sum += 1.0; }
        if (x + side <= divisions)
        { avg += terrain[x + side][y + half]; sum += 1.0; }
        if (y + side <= divisions)
        { avg += terrain[x + half][y + side]; sum += 1.0; }
        terrain[x + half][y + half] = avg / sum + rnd () * scale;
      }
      private double rnd () {
        return 2. * rng.nextDouble () - 1.0;
      }
      public double getAltitude (double i, double j) {
        double alt = terrain[(int) (i * divisions)][(int) (j * divisions)];
        return (alt - min) / (max - min);
      }
      private RGB blue = new RGB (0.0, 0.0, 1.0);
      private RGB green = new RGB (0.0, 1.0, 0.0);
      private RGB white = new RGB (1.0, 1.0, 1.0);
      
      public RGB getColor (double i, double j) {
        double a = getAltitude (i, j);
        if (a < .5)
          return blue.add (green.subtract (blue).scale ((a - 0.0) / 0.5));
        else
          return green.add (white.subtract (green).scale ((a - 0.5) / 0.5));
        
      }
        
      
      public static void main(String args[])  {
            double exaggeration = .7;
      	  int lod = 5;
      	  int steps = 1 << lod;
      	  Triple[] []map = new Triple[steps + 1][steps + 1];
      	  RGB[][]colors = new RGB[steps + 1][steps + 1];
      	  Terrain terrain1 = new FractalTerrain (lod, .5);
      	  SimpleUniverse universe = new SimpleUniverse();
      	  BranchGroup group = new BranchGroup();
      	  group.addChild((Node) terrain1);(ligne94)
      	for (int i1 = 0; i1 <= steps; ++ i1) {
      	    for (int j1 = 0; j1 <= steps; ++ j1) {
      	      double x = 1.0 * i1 / steps, z = 1.0 * j1 / steps;
      	      double altitude = terrain1.getAltitude (x, z);
      	      map[i1][j1] = new Triple (x, altitude * exaggeration, z);       
      	      colors[i1][j1] = terrain1.getColor (x, z);
      		  group.addChild((Node) terrain1);    
      	    }
         universe.getViewingPlatform().setNominalViewingTransform();
         universe.addBranchGraph(group);
       	}
    }
    }



    ce code genere une fenetre noire et le message d erreur suivant


    xception in thread "main" java.lang.ClassCastException: pack1.FractalTerrain cannot be cast to javax.media.j3d.Node
    at pack1.FractalTerrain.main(FractalTerrain.java:94)

  2. #2
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    mon petit doigt me dit que si tu édites ton message pour mettre en évidence la fameuse ligne (94) qui pose souci

    ... tu auras des réponses beaucoup plus rapidement

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 4
    Par défaut
    voila c'est fait merci

  4. #4
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Premièrement, tu t'es planté de ligne dans ton post. La ligne 94 est un peu au dessus de ce que tu nous as mis en orange

    Pour le fond, ta classe FractalTerrain ne dérive pas de la classe javax.media.j3d.Node, qui est la classe de base pour n'importe quel élément que tu veux ajouter à ton sceneGraph:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class FractalTerrain implements Terrain
    Après, si tu veux plus d'infos, il faudra nous dire d'où vient l'interface Terrain, et ce que tu veux réellement ajouter dans ton sceneGraph:
    - lors du premier appel à addChild
    - lors de chaque appel à addChild dans les boucles for.

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 4
    Par défaut
    voila l interface terrain
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public interface Terrain {
      public double getAltitude (double i, double j);
      public RGB getColor (double i, double j);
    }
    classe RGB
    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
     
    public class RGB {
      private double r, g, b;
      public RGB (double r, double g, double b) {
        this.r = r;
        this.g = g;
        this.b = b;
      }
      public RGB add (RGB rgb) {
        return new RGB (r + rgb.r, g + rgb.g, b + rgb.b);
      }
      public RGB subtract (RGB rgb) {
        return new RGB (r - rgb.r, g - rgb.g, b - rgb.b);
      }
      public RGB scale (double scale) {
        return new RGB (r * scale, g * scale, b * scale);
      }
      private int toInt (double value) {
        return (value < 0.0) ? 0 : (value > 1.0) ? 255 :
          (int) (value * 255.0);
      }
      public int toRGB () {
        return (0xff << 24) | (toInt (r) << 16) |
          (toInt (g) << 8) | toInt (b);
      }
    }
    classe triangle
    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
     
    import java.awt.Color;
     
     
    public class Triangle {
      private int[] i = new int[3];
      private int[] j = new int[3];
      private Triple n;
      private RGB[] rgb = new RGB[3];
      private Color color;
      public Triangle (int i0, int j0, int i1, int j1, int i2, int j2) {
        i[0] = i0;
        i[1] = i1;
        i[2] = i2;
        j[0] = j0;
        j[1] = j1;
        j[2] = j2;
      }
    }
    classe triple
    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
     
    public class Triple {
      private double x, y, z;
      public Triple (double x, double y, double z) {
        this.x = x;
        this.y = y;
        this.z = z;
      }
      public Triple add (Triple t) {
        return new Triple (x + t.x, y + t.y, z + t.z);
      }
      public Triple subtract (Triple t) {
        return new Triple (x - t.x, y - t.y, z - t.z);
      }
      public Triple cross (Triple t) {
        return new Triple (y * t.z - z * t.y, z * t.x - x * t.z,
          x * t.y - y * t.x);
      }
      public double dot (Triple t) {
        return x * t.x + y * t.y + z * t.z;
      }
      public double length2 () {
        return dot (this);
      }
      public Triple normalize () {
        return scale (1.0 / Math.sqrt (length2 ()));
      }
      public Triple scale (double scale) {
        return new Triple (x * scale, y * scale, z * scale);
      }
     
     
     
     
     
    }
    voila c tt

  6. #6
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    ^^ et les balises [CODE ] et [ /CODE ] ???

Discussions similaires

  1. [Java mail] probleme de cast
    Par ulquiorra dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 12/07/2010, 15h08
  2. Probleme de cast java.lang.ClassCastException
    Par pracede2005 dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 18/05/2007, 12h15
  3. [VB.NET][dataset][datagrid] probleme de Cast
    Par graphicsxp dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/05/2005, 14h18
  4. Probleme de cast de parametres
    Par John Fullspeed dans le forum Langage
    Réponses: 3
    Dernier message: 14/10/2004, 08h43
  5. probleme de cast
    Par gaut dans le forum C++
    Réponses: 9
    Dernier message: 06/08/2004, 18h43

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