Quelques renseignements avant de me lancer dans un projet

WhiteBeast Messages postés 9 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 16 mai 2005 - 3 mai 2005 à 15:18
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007 - 17 mai 2005 à 08:52
Bonjour à tous,
Je suis en stage dans une petite entreprise et le projet que j'ai a réaliser me pose quelques petit problème alors avant de vraiment me lancer tête baissé et de m'appercevoir que finalement ce n'est pas réalisable en java je voudrait vous demander votre avis.
Mon projet est un projet de cartographie (j'avais déjà laisser un message dessus sans avoir de réponse malheureusement) et j'en ai bien parler avec mon employeur et je sais maintenant de façon plus précise ce que j'ai à faire: je doit pouvoir afficher une carte dans un format DXF (cette étape à été réussit grâce à un loader), zoomer et se déplacer dessus (réussit aussi en jouent les 3 axes). Le zoom et le déplacement seront gérer par l'utilisateur grâce à des boutons (et la je n'arrive pas a apliquer l'action de zoom lorsque j'appuis sur le bouton - 1er problème ). Ensuite je doit pouvoir tracer des lignes et des formes géométrique sur cette carte (2ème problème: les dessins de lignes et de formes géométriqques 2D ce fait avec Java2D or la carte s'affiche dans un univers Java3D donc j'arrive bien à dessiner des lignes mais elle se dessinent derrière l'univer3D). Est ce que c'est possible de mélanger Java2D et java3D pour dessiner des composante de java2D dans un univers java3D? si oui comment?
Une fois que les lignes sont tracé je doit pouvoir sauvegarder les coordonné des extrémité et pouvoir les recharger pour une utilisation futur, lors du chargement de ces coordonnées le segmet devra se retracer auomatiquement (pareil avecles formes géométrique comme la sauvegarde des coordonner du centre et de la taille du rayon pour un cercle), la même question qui revient est ce que c'est possible et si oui comment?
Ensuite je devrai relier l'apllication à une base de donnée et afficher des des pictogramme ont les coordonnée sont dans la base de données pour cartographier des événement (JDBC non?).
Ensuite je doit pouvoir imprimer la carte tel qu'elle est afficher à l'écran (ca je sais a peu prés faire mais avec java3D j'ai un peu plus de mal puisque que quand je fais le test il ne m'imprime pas l'univers 3D ).
Voila je pense avoir tout dit de l'application que je doit réaliser.
Est ce que quequ'un sait si c'est réalisable en java et si oui j'ai deja un petit pogramme que je peux montrer pour voir si quelqu'un voit mes erreurs et aurait la gentillesse de m'aider. Je rappel que je suis débutant en java et qu'avant le début de mon stage je ne connaissait même pas l'existance de java3D donc je galère assez.
Voila merci d'avance! Si jamais je n'ai pas été trés clair sur certain point et que vous voulez des précisions en plus sur le sujet n'hésitez pas à e demandé.

Yusghufu

8 réponses

dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
4 mai 2005 à 09:41
Salut a toi.

oui, tu peux melanger java2D et java3D, il suffit de surcharger la methode postRender du Canvas3D



public void postRender()
{
J3DGraphics2D g = getGraphics2D();

//ici tu fais du java2d

g.flush(false);
}






Mais pourquoi veux tu les dessiner en 2D tes lignes, tu fais de la pseudo 3D sans rotation?



Pour imprimer, tu peux generer une image de ton canvas3D facilement:



public void ExportCanvas(Canvas3D canvas) {

GraphicsContext3D context = canvas.getGraphicsContext3D();

Raster raster = new Raster(new Point3f( -1.0f, -1.0f, -1.0f),


Raster.RASTER_COLOR, 0, 0,


canvas.getWidth(),


canvas.getHeight(),


new ImageComponent2D(ImageComponent.FORMAT_RGB,

new BufferedImage(this.canv_base.getWidth(),


this.canv_base.getHeight(),


BufferedImage.TYPE_INT_RGB)), null);



context.readRaster(raster);

BufferedImage img = raster.getImage().getImage();



// choix du fichier :

JFileChooser file_chooser = new JFileChooser();

File file = null;

String path = null;

if (file_chooser.showSaveDialog(new JFrame()) == JFileChooser.APPROVE_OPTION) {

file = file_chooser.getSelectedFile();

path = file.getPath();

}

if (file null || path null || path == "") {

return;

}

//ecriture du fichier

try {

FileOutputStream out = new FileOutputStream(file);

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(img);

encoder.setJPEGEncodeParam(param);

encoder.encode(img);

out.close();

}

catch (IOException e) {

System.out.printlnt("Error while writting creating image " +


file.getPath());

}

}



Tu viens d'ou exactement pour faire un stage de carto?
-------------------
dams
-------------------
0
WhiteBeast Messages postés 9 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 16 mai 2005
4 mai 2005 à 13:13
Salut. Merci bien pour tes renseigenments
Je viens de Dunkerque, je suis en deuxième année de DUT informatique à l'IUT de Calais (en stage de fin d'année).
En fait je fait pas vraiment de 3D avec cette application, je m'en sert juste pour afficher la carte au format DXF, d'aprés ce que j'ai lu sur ce format c'est un format en 3D et pour le lire avec java il faut utiliser des Loader et ceux ci se servent de java3D.
Pour te donner une idée je doit réaliser une appli qui ressemble à celle ci: http://sig.calais.cci.fr/cartopage.asp Mais en fait je me pose une question est ce que java est réellement le langage le plus adapté pour ce genre d'appli? Je suis en train de le faire en java , aprés en avoir dicuter avec un de mes profs et mon employeur, car c'et une appli qui va etre sur le net et les applet java sont trés répendu et tourne assez bien sur plusieurs systemes. En plus l'appli existe déjà mais le problème est qu'elle tourne trop lentement (donc je doit la refaire) et avec java ca serai plus rapide.

La je suis en train de tester ce que tu m'a filé, pour l'instant ca marche pas mais il doit y avoir une coui*** dans mon prog et faut que je la trouve. Le problème est que je connais pas bien java3D du coup j'apprend en même temps que j'avance et ça prend quand même du temps. Si ca te dit je peux te filer mon source et si tu trouve une minute pour y jeter un coup d'oeil pour me mettre un peu sur la bonne direction (vu que j'avance un peu dans le flou j'ai peur de partir sur une mauvaise direction et de m'appercevoir qu'il faut tout recommencer une fois que j'aurais passer beaucoup de temps dessus).
Voila. Encore merci à toi - @+
Yusghufu
0
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
4 mai 2005 à 13:24
Hum, si c'est pour faire ce genre d'appli, le java3d ne te servira a rien.

il vaut mieux pour toi le faire en 2D pur...

regarde sur

http://www.forumsig.org/

tu trouveras certainement de bon conseil...

Ou si tu as besoin, envoies-moi ton code.

-------------------
dams
-------------------
0
WhiteBeast Messages postés 9 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 16 mai 2005
4 mai 2005 à 19:31
Yep merci pour le lien

Je vais profiter de ce jeudi férier pour pouvoir récolter le maximum de
renseignement possible comme ca je pourait en parler à mon employeur
Vendredi.

Par contre tu dit que c'est mieux le faire en 2D pur mais comment
manipuler les fichier DXF sans utiliser java3D? tout les Loader que
j'ai pu trouver ou entendre parler utilise java3D. J'ai chercher je
n'ai pas trouver de classe qui le faisait (ou alors j'ai mal chercher?).

Je vais essayer de mettre tout les truc en rapport avec le projet sur
ftp ce soir et je te filerai les liens, sinon ca sera fait demain
matin. Enfin prend toi pas trop la tête avec si t'a d'autre truc plus
important à faire.

Voila. Merci bien


Yusghufu
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
WhiteBeast Messages postés 9 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 16 mai 2005
5 mai 2005 à 16:02
Désolé pour ce petit retard mais voici comme promis le code source

http://membres.lycos.fr/guimbarde/Java/Stage.rar

Yusghufu
0
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
10 mai 2005 à 18:49
Bon, je suis un peu en vacances en ce moment, mais pour ton pb de java2d vers 3d,

j'ai teste ta source, to erreur est corrige par:



Canvas3D tmpCanvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration()){

public void postRender()

{

J3DGraphics2D g = getGraphics2D();

g.setColor(blanc);

g.drawLine(0,0,500,500);

g.flush(false);

System.out.println("paint");

}

};



Ca va faire un repaint a chaque fin de cycle j3d...

DXF, ce sont des fichiers autocad...

Alors en effet le j3d est parfait, mais comment se fait t'il que tes fichiers soit 3D???

Tu as un Z sur ta map en plus???

-------------------
dams
-------------------
0
WhiteBeast Messages postés 9 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 16 mai 2005
16 mai 2005 à 22:27
Merci bien!!

Franchement j'aurais jamais pensé à faire ça... En fait je savais même pas qu'on pouvait faire ce genre de choses...

La j'essaye de faire en sorte que les lignes ne soit plus dessiner par
le programme mais par l'utilisateur. ça ne s'affiche pas sur la carte
mais derrière je pense savoir d'ou viennt le problème mais je sais pas
encore comment le corriger.

Pour répondre à tes question, mes fichier sont 3D parce qu'on me les a
donné comme ça (désolé pour celle la je n'ai pas d'autres
explications...) et le Z sur la map je m'en sert pour les zooms (x et y
servent pour les pans).

Sinon en parallèle je suis en train d'étudier JShape (d'ou le petit
retard...) mais je comprend pas grand chose je sais même pas comment ça
marche...

En tout cas c'est bien sympa de ta part de consacré un peu de temps à
mon problème et désolé si je prend du temps sur tes vacances.

Yusghufu
0
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
17 mai 2005 à 08:52
Pas de pb pour t'aider a quoi que ce soit...

Sinon je ne serais pas sur ce genre de forum...

-------------------
dams
-------------------
0
Rejoignez-nous