rania.804
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.804
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 );
}
}
rania.804
Messages postés vendredi 3 mars 2017Date d'inscription
5 mars 2017
Dernière intervention
>
KX15361
Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut
19 avril 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;
}
}
KX15361
Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut
19 avril 2018
Dernière intervention
>
rania.804
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.804
Messages postés vendredi 3 mars 2017Date d'inscription
5 mars 2017
Dernière intervention
>
KX15361
Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut
19 avril 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.
mais quelle est l'instruction qui remplace "drawline" pour dessiner segment A(x.y.z) e B(x.y.z)
merci
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
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.