Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
679 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Probleme de précision avec les tracés java2D

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme de précision avec les tracés java2D

n°1158383
olivier__
Posté le 24-07-2005 à 17:46:09  profilanswer
 

Bonjour,
j'essaye de faire un programme (le premier) avec des tracés de rayons lumineux et avec lequel je voudrai faire des zooms assez importants.
Pour l'instant je cherche juste à tracer le rayon lumineux jusqu'à ce qu'il rencontre un cercle. Pas de probleme pour les calculs pour trouver la première intersection, mais lorsque je fait un zoom sur le tracé, le rayon rentre dans le cercle.
Je vous donne une partie du code :
 

Code :
  1. public void paint(Graphics g){
  2.        Graphics2D g2D=(Graphics2D)g;
  3.        g2D.setRenderingHint(java.awt.RenderingHints.KEY_STROKE_CONTROL,java.awt.RenderingHints.VALUE_STROKE_PURE);
  4.        g2D.scale(theApp.getModel().GetZoom(),theApp.getModel().GetZoom());
  5.        Stroke s = new BasicStroke((float)(1/theApp.getModel().GetZoom()),BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
  6.        Stroke ini=g2D.getStroke();
  7.        g2D.setStroke(s);
  8.        Arc2D.Double cercle1=new Arc2D.Double(200,400,200,200,0,360,java.awt.geom.Arc2D.OPEN);
  9.        System.out.println(cercle1.contains(202.020410288672,520));
  10.        Line2D.Double r2=new Line2D.Double(0,520, 202.020410288672,520);
  11.        g2D.draw(cercle1);
  12.        g2D.draw(r2);
  13.        g2D.setStroke(ini);
  14.    }


 
System.out.println(cercle1.contains(202.020410288672,520)); me donne false et pourtant le rayon r2 rentre à l'intérieur du cercle1!! (ça se voit à partir d'un zoom *100)
Voilà un screenshot en zoom *500 :
http://vanvincq.chez.tiscali.fr/intersection.jpg
Est-ce que quelqu'un peut m'aider? Merci.
 
 

mood
Publicité
Posté le 24-07-2005 à 17:46:09  profilanswer
 

n°1158913
olivier__
Posté le 25-07-2005 à 11:55:08  profilanswer
 

J'ai enlevé le scale en multipliant tout par 500. et j'ai enlevé quelques chiffres en croyant que j'avais peut-être atteint la limite de précision du double...

Code :
  1. Stroke s = new BasicStroke((float)(1/theApp.getModel().GetZoom()),BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
  2. Stroke ini=g2D.getStroke();
  3. g2D.setStroke(s);
  4. Arc2D.Double cercle1=new Arc2D.Double(100000,200000,100000,100000,0,360,java.awt.geom.Arc2D.CHORD);
  5. System.out.println(cercle1.contains(101010,260000));
  6. Line2D.Double r2=new Line2D.Double(0,260000, 101010,260000);
  7. g2D.setStroke(s);
  8. g2D.draw(cercle1);
  9. g2D.draw(r2);
  10. g2D.setStroke(ini);


Et c'est toujours pareil, le point final de r2 n'appartient pas au cercle et pourtant r2 rentre dans le cercle.
Je ne comprends vraiment rien. Je fais peut-être une grosse erreur, mais je ne vois vraiment pas.

n°1161925
olivier__
Posté le 27-07-2005 à 17:07:00  profilanswer
 

Bon, à priori c'est un bug connu de java : http://bugs.sun.com/bugdatabase/vi [...] id=4265778


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Probleme de précision avec les tracés java2D

 

Sujets relatifs
probleme creation de miniatures[Flash/ActionScript] Problème de loadNumMovie()
Problème de tableaux :sProblème de feuille d'envoi et d'image par java .
Probleme compatibilité d'un site entre FireFox et IEProbleme dácces a des id avec des [ ] et getElementById
Problème de guillemet.Problème de selectedIndex d'un select
probleme avec le input type="radio"Problème d'importation
Plus de sujets relatifs à : Probleme de précision avec les tracés java2D


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR