olivier__ | 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 :
- public void paint(Graphics g){
- Graphics2D g2D=(Graphics2D)g;
- g2D.setRenderingHint(java.awt.RenderingHints.KEY_STROKE_CONTROL,java.awt.RenderingHints.VALUE_STROKE_PURE);
- g2D.scale(theApp.getModel().GetZoom(),theApp.getModel().GetZoom());
- Stroke s = new BasicStroke((float)(1/theApp.getModel().GetZoom()),BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
- Stroke ini=g2D.getStroke();
- g2D.setStroke(s);
- Arc2D.Double cercle1=new Arc2D.Double(200,400,200,200,0,360,java.awt.geom.Arc2D.OPEN);
- System.out.println(cercle1.contains(202.020410288672,520));
- Line2D.Double r2=new Line2D.Double(0,520, 202.020410288672,520);
- g2D.draw(cercle1);
- g2D.draw(r2);
- g2D.setStroke(ini);
- }
|
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 :
Est-ce que quelqu'un peut m'aider? Merci.
|