Dessiner un ligne ou segment AB dans les 3 axes

rania.80 4 Messages postés vendredi 3 mars 2017Date d'inscription 5 mars 2017 Dernière intervention - 3 mars 2017 à 15:38 - Dernière réponse : rania.80 4 Messages postés vendredi 3 mars 2017Date d'inscription 5 mars 2017 Dernière intervention
- 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 );

}
}
Afficher la suite 

Votre réponse

6 réponses

KX 15559 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 23 juin 2018 Dernière intervention - Modifié par KX le 4/03/2017 à 00:07
0
Merci
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
rania.80 4 Messages postés vendredi 3 mars 2017Date d'inscription 5 mars 2017 Dernière intervention - 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
KX 15559 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 23 juin 2018 Dernière intervention - 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);
rania.80 4 Messages postés vendredi 3 mars 2017Date d'inscription 5 mars 2017 Dernière intervention > KX 15559 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 23 juin 2018 Dernière intervention - 4 mars 2017 à 21:07
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; 
  }
   }
KX 15559 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 23 juin 2018 Dernière intervention > rania.80 4 Messages postés vendredi 3 mars 2017Date d'inscription 5 mars 2017 Dernière intervention - 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.
rania.80 4 Messages postés vendredi 3 mars 2017Date d'inscription 5 mars 2017 Dernière intervention > KX 15559 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 23 juin 2018 Dernière intervention - 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.
Commenter la réponse de KX

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.