Dessiner un ligne ou segment AB dans les 3 axes

rania.80 Messages postés 4 Date d'inscription vendredi 3 mars 2017 Statut Membre Dernière intervention 5 mars 2017 - Modifié par KX le 4/03/2017 à 00:00
rania.80 Messages postés 4 Date d'inscription vendredi 3 mars 2017 Statut Membre Dernière intervention 5 mars 2017 - 5 mars 2017 à 10:34
Bonjour,
je voudrais de dessiner un ligne ou bien segment "AB" mais dans les 3 axes (x.y.z)
. j'ai essayée Drawline mais cette instruction utilisée seulement pour x et y.
ça marche pas dans ce code.
aider moi s'il vous plait.


import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;



public class Segment
{
  public Point3 A;
     public Point3 B;


public Color c;

public Segment(Point3 A, Point3 B, Color c)
 {
  this.A = new Point3(A.x, A.y, A.z);
  this.B = new Point3(B.x, B.y,B.z);

this.c = c;
 }

public void SetColor(Color c)
 {
  this.c = c;
 }

public void Render(Graphics g)
 {
  Graphics2D g2 = (Graphics2D) g;

g2.setColor(this.c);

g2.drawline(A.x, A.y,A.z, B.x, B.y,A.z );

}
}

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
Modifié par KX le 4/03/2017 à 00:07
Bonjour,

Java ne gère que deux axes car ton écran est composé de pixels sur deux dimensions.

Tu peux faire des représentations 3D en Java, soit avec des bibliothèques, soit à la main, mais ça ne restera que des projections 2D sur l'écran.

Par exemple, tu peux considérer la projection suivante :
f(x,y,z)=(x+z/2, y+z/2)

Ce qui donnerait à peu près ceci pour un cube :

La confiance n'exclut pas le contrôle
0
rania.80 Messages postés 4 Date d'inscription vendredi 3 mars 2017 Statut Membre Dernière intervention 5 mars 2017
4 mars 2017 à 10:01
merci pour votre réponse;
mais quelle est l'instruction qui remplace "drawline" pour dessiner segment A(x.y.z) e B(x.y.z)
merci
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
4 mars 2017 à 11:44
Selon ta projection tu peux avoir par exemple :
g2.drawline(A.x+A.z/2, A.y+A.z/2, B.x+B.z/2, B.y+B.z/2);
0
rania.80 Messages postés 4 Date d'inscription vendredi 3 mars 2017 Statut Membre Dernière intervention 5 mars 2017 > KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024
Modifié par KX le 5/03/2017 à 00:09
merci beaucoup;
est ce que tu sais comment calculer point d'intersection de deux segments dans un espace 3d
parce que dans l'espace 2d est calculer comme ça

public static Point2D.Double intersection(Point2D.Double A, Point2D.Double B,Segment segment2) {/***/
     double d = (A.x-B.x)*(segment2.A.y-segment2.B.y) - (A.y-B.y)*(segment2.A.x-segment2.B.x);
     if (d == 0) // Lines are parallel.
      return null;

double xi = ((segment2.A.x-segment2.B.x)*(A.x*B.y-A.y*B.x)-(A.x-B.x)*(segment2.A.x*segment2.B.y-segment2.A.y*segment2.B.x))/d;
     double yi = ((segment2.A.y-segment2.B.y)*(A.x*B.y-A.y*B.x)-(A.y-B.y)*(segment2.A.x*segment2.B.y-segment2.A.y*segment2.B.x))/d;

double lx1 = ((xi-A.x)) ;
     double lx2 =(B.x-A.x);
     double ly1 = ((yi-A.y)) ;
     double ly2 =(B.y-A.y);
     double h1 = lx1/lx2;
     double h2 = ly1/ly2;

if((h1 >= 0 && h1 <=1 )||(h2 >= 0 && h2 <= 1)){

return new Point2D.Double(xi,yi);
  }
  else{
   return null; 
  }
   }
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127 > rania.80 Messages postés 4 Date d'inscription vendredi 3 mars 2017 Statut Membre Dernière intervention 5 mars 2017
5 mars 2017 à 00:42
En 2D ou en 3D le problème reste à peu près le même.

Soit A(ax, ay, az), B(bx, by, bz) les points de AB
Soit C(cx, cy, cz), D(dx, dy, dz) les points de CD

L'intersection (si elle existe) vérifie l'égalité A + v*(B-A) = C + w*(D-C)

Donc finalement ça reste une équation à deux inconnues comme en 2D.
Il faut juste la vérifier sur la 3è dimension une fois v et w calculés à partir des deux première dimensions.

Remarque : ici je parle de l'intersection de deux droites, une fois le point d'intersection trouvé (s'il existe) il faut aussi vérifier qu'il appartient bien aux deux portions de droites où sont les segments.
0
rania.80 Messages postés 4 Date d'inscription vendredi 3 mars 2017 Statut Membre Dernière intervention 5 mars 2017 > KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024
5 mars 2017 à 10:34
est ce que tu connais comment calculer mathématiquement et en java. parce que je suis débutant dans la programmation; et je besoin cette calcule dans un autre travail. merci infiniment.
0
Rejoignez-nous