public class TranslatedBar extends TransformGroup {
// Constantes (longueur et couleur par défaut)
private static final float WID_DEF = 0.10f; // largeur
private static final float DEP_DEF = 0.10f; // profondeur
private static final float HEI_DEF = 0.00f; // hauteur (début)
// Variables d'instance. Elles ne sont à priori pas nécéssaires,
mais
// permettront de récupérer ces infos ou les modifier si le besoin
s'en
// fait sentir
private double posX, posZ;
private Box box;
private float height;
//======================================================================== > // Constructeurs
//
public TranslatedBar() {
this(WID_DEF, DEP_DEF, HEI_DEF, 0, 0, new BarAppearance());
}
public TranslatedBar(float width, float depth, float height, double
posX, double posZ, Appearance appearance) {
// Position
super();
Transform3D translation = new Transform3D();
Vector3d translationVector = new Vector3d(posX, (double)height,
posZ);
translation.setTranslation(translationVector);
this.setTransform(translation);
// Position et valeur
this.posX = posX;
this.posZ = posZ;
this.value = height;
// Construction de la box
this.box = new Box(width, height, depth, Box.GENERATE_NORMALS,
appearance);
this.addChild(this.box);
}
<SNIP>
}
Je te mets l'endroit où je génère le graphique... je te passe le
reste pour ne pas t'emmerder avec du code inutile... pas parce que
c'est secret... si tu veux le code complet pour voir comment ça
s'exécute, il n'y a pas de problème, je peux faire un peit zip.
//======================================================================== > // Use cases
//
public void générerGraphique(Canvas3D canvas3D) {
// Création de l'univers
SimpleUniverse universe = new SimpleUniverse(canvas3D);
ViewingPlatform platform = universe.getViewingPlatform();
platform.setNominalViewingTransform();
// On règle la vue
TransformGroup platformTransformGroup > platform.getViewPlatformTransform();
Transform3D camera = new Transform3D();
platformTransformGroup.getTransform(camera);
Point3d cameraPosition = new Point3d(1.0, 2, 2.3);
camera.lookAt(cameraPosition, new Point3d(0.5, -0.3, 0), new
Vector3d(0, 5, 0));
camera.invert();
platformTransformGroup.setTransform(camera);
// On ajoute tous nos sous-graphes à l'univers
universe.addBranchGraph(createAxisGraph());
universe.addBranchGraph(createBarsGraph(5));
universe.addBranchGraph(createLightGraph());
}
private BranchGroup createBarsGraph(int barsCount) {
BranchGroup objRoot = new BranchGroup();
// On définit les différentes apparences de barres, certaines
// seront communes (si elles ont la même couleur)
ArrayList appearanceList = new ArrayList();
Iterator itColors = colorList.iterator();
while (itColors.hasNext()) {
Color3f currentColor = (Color3f) itColors.next();
appearanceList.add(new BarAppearance(currentColor, 0.0f));
}
// Générer les barres
Iterator itRow = data.listLabels();
Iterator itData = data.listData();
int nbDataPerRow = data.getDataPerRow();
int rowNumber = 0;
while (itData.hasNext()) {
int i=0;
while (itRow.hasNext() && i<nbDataPerRow) {
float currentValue = Float.parseFloat( (String)itData.next() );
double posX = DIAM/2.0 + 0.1 + (double)(i*(DIAM+ECART));
BarAppearance currentAppearance = (BarAppearance)
appearanceList.get((i+rowNumber)%appearanceList.size());
objRoot.addChild(new TranslatedBar(DIAM, DIAM, currentValue,
posX, DIAM/2.0+0.1+rowNumber*0.32, currentAppearance));
i++;
}
rowNumber++;
}
objRoot.compile();
return objRoot;
}
<SNIP>
}
public class TranslatedBar extends TransformGroup {
// Constantes (longueur et couleur par défaut)
private static final float WID_DEF = 0.10f; // largeur
private static final float DEP_DEF = 0.10f; // profondeur
private static final float HEI_DEF = 0.00f; // hauteur (début)
// Variables d'instance. Elles ne sont à priori pas nécéssaires,
mais
// permettront de récupérer ces infos ou les modifier si le besoin
s'en
// fait sentir
private double posX, posZ;
private Box box;
private float height;
//======================================================================== > // Constructeurs
//
public TranslatedBar() {
this(WID_DEF, DEP_DEF, HEI_DEF, 0, 0, new BarAppearance());
}
public TranslatedBar(float width, float depth, float height, double
posX, double posZ, Appearance appearance) {
// Position
super();
Transform3D translation = new Transform3D();
Vector3d translationVector = new Vector3d(posX, (double)height,
posZ);
translation.setTranslation(translationVector);
this.setTransform(translation);
// Position et valeur
this.posX = posX;
this.posZ = posZ;
this.value = height;
// Construction de la box
this.box = new Box(width, height, depth, Box.GENERATE_NORMALS,
appearance);
this.addChild(this.box);
}
<SNIP>
}
Je te mets l'endroit où je génère le graphique... je te passe le
reste pour ne pas t'emmerder avec du code inutile... pas parce que
c'est secret... si tu veux le code complet pour voir comment ça
s'exécute, il n'y a pas de problème, je peux faire un peit zip.
//======================================================================== > // Use cases
//
public void générerGraphique(Canvas3D canvas3D) {
// Création de l'univers
SimpleUniverse universe = new SimpleUniverse(canvas3D);
ViewingPlatform platform = universe.getViewingPlatform();
platform.setNominalViewingTransform();
// On règle la vue
TransformGroup platformTransformGroup > platform.getViewPlatformTransform();
Transform3D camera = new Transform3D();
platformTransformGroup.getTransform(camera);
Point3d cameraPosition = new Point3d(1.0, 2, 2.3);
camera.lookAt(cameraPosition, new Point3d(0.5, -0.3, 0), new
Vector3d(0, 5, 0));
camera.invert();
platformTransformGroup.setTransform(camera);
// On ajoute tous nos sous-graphes à l'univers
universe.addBranchGraph(createAxisGraph());
universe.addBranchGraph(createBarsGraph(5));
universe.addBranchGraph(createLightGraph());
}
private BranchGroup createBarsGraph(int barsCount) {
BranchGroup objRoot = new BranchGroup();
// On définit les différentes apparences de barres, certaines
// seront communes (si elles ont la même couleur)
ArrayList appearanceList = new ArrayList();
Iterator itColors = colorList.iterator();
while (itColors.hasNext()) {
Color3f currentColor = (Color3f) itColors.next();
appearanceList.add(new BarAppearance(currentColor, 0.0f));
}
// Générer les barres
Iterator itRow = data.listLabels();
Iterator itData = data.listData();
int nbDataPerRow = data.getDataPerRow();
int rowNumber = 0;
while (itData.hasNext()) {
int i=0;
while (itRow.hasNext() && i<nbDataPerRow) {
float currentValue = Float.parseFloat( (String)itData.next() );
double posX = DIAM/2.0 + 0.1 + (double)(i*(DIAM+ECART));
BarAppearance currentAppearance = (BarAppearance)
appearanceList.get((i+rowNumber)%appearanceList.size());
objRoot.addChild(new TranslatedBar(DIAM, DIAM, currentValue,
posX, DIAM/2.0+0.1+rowNumber*0.32, currentAppearance));
i++;
}
rowNumber++;
}
objRoot.compile();
return objRoot;
}
<SNIP>
}
public class TranslatedBar extends TransformGroup {
// Constantes (longueur et couleur par défaut)
private static final float WID_DEF = 0.10f; // largeur
private static final float DEP_DEF = 0.10f; // profondeur
private static final float HEI_DEF = 0.00f; // hauteur (début)
// Variables d'instance. Elles ne sont à priori pas nécéssaires,
mais
// permettront de récupérer ces infos ou les modifier si le besoin
s'en
// fait sentir
private double posX, posZ;
private Box box;
private float height;
//======================================================================== > // Constructeurs
//
public TranslatedBar() {
this(WID_DEF, DEP_DEF, HEI_DEF, 0, 0, new BarAppearance());
}
public TranslatedBar(float width, float depth, float height, double
posX, double posZ, Appearance appearance) {
// Position
super();
Transform3D translation = new Transform3D();
Vector3d translationVector = new Vector3d(posX, (double)height,
posZ);
translation.setTranslation(translationVector);
this.setTransform(translation);
// Position et valeur
this.posX = posX;
this.posZ = posZ;
this.value = height;
// Construction de la box
this.box = new Box(width, height, depth, Box.GENERATE_NORMALS,
appearance);
this.addChild(this.box);
}
<SNIP>
}
Je te mets l'endroit où je génère le graphique... je te passe le
reste pour ne pas t'emmerder avec du code inutile... pas parce que
c'est secret... si tu veux le code complet pour voir comment ça
s'exécute, il n'y a pas de problème, je peux faire un peit zip.
//======================================================================== > // Use cases
//
public void générerGraphique(Canvas3D canvas3D) {
// Création de l'univers
SimpleUniverse universe = new SimpleUniverse(canvas3D);
ViewingPlatform platform = universe.getViewingPlatform();
platform.setNominalViewingTransform();
// On règle la vue
TransformGroup platformTransformGroup > platform.getViewPlatformTransform();
Transform3D camera = new Transform3D();
platformTransformGroup.getTransform(camera);
Point3d cameraPosition = new Point3d(1.0, 2, 2.3);
camera.lookAt(cameraPosition, new Point3d(0.5, -0.3, 0), new
Vector3d(0, 5, 0));
camera.invert();
platformTransformGroup.setTransform(camera);
// On ajoute tous nos sous-graphes à l'univers
universe.addBranchGraph(createAxisGraph());
universe.addBranchGraph(createBarsGraph(5));
universe.addBranchGraph(createLightGraph());
}
private BranchGroup createBarsGraph(int barsCount) {
BranchGroup objRoot = new BranchGroup();
// On définit les différentes apparences de barres, certaines
// seront communes (si elles ont la même couleur)
ArrayList appearanceList = new ArrayList();
Iterator itColors = colorList.iterator();
while (itColors.hasNext()) {
Color3f currentColor = (Color3f) itColors.next();
appearanceList.add(new BarAppearance(currentColor, 0.0f));
}
// Générer les barres
Iterator itRow = data.listLabels();
Iterator itData = data.listData();
int nbDataPerRow = data.getDataPerRow();
int rowNumber = 0;
while (itData.hasNext()) {
int i=0;
while (itRow.hasNext() && i<nbDataPerRow) {
float currentValue = Float.parseFloat( (String)itData.next() );
double posX = DIAM/2.0 + 0.1 + (double)(i*(DIAM+ECART));
BarAppearance currentAppearance = (BarAppearance)
appearanceList.get((i+rowNumber)%appearanceList.size());
objRoot.addChild(new TranslatedBar(DIAM, DIAM, currentValue,
posX, DIAM/2.0+0.1+rowNumber*0.32, currentAppearance));
i++;
}
rowNumber++;
}
objRoot.compile();
return objRoot;
}
<SNIP>
}
Merci beaucoup pour ton aide. En fait, on a résolu mon problème sur
le forum de Sun :
Merci beaucoup pour ton aide. En fait, on a résolu mon problème sur
le forum de Sun :
Merci beaucoup pour ton aide. En fait, on a résolu mon problème sur
le forum de Sun :