Classe de points et segments.

Fermé
Bertos - Modifié par Scarface72 le 14/01/2014 à 06:11
 Bertos - 14 janv. 2014 à 20:19
Bonjour,

je suis sur un projet assez complex pour moi (débutant) ou je dois faire un segment à partir de deux points.
Le segment AB doit etre l'ensemble des points entre le point A et le point B.

comment faire?

voila ma classe Point:

public class Point {
int x;
int y;

public Point(int x, int y){
this.x=x;
this.y=y;
}
}

Merci d'avance

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
14 janv. 2014 à 07:36
"L'ensemble des points" c'est une représentation de l'esprit, mais pour le décrire formellement tu n'as besoin que des deux points A et B. La ligne imaginaire qu'il y a entre les deux et l'ensemble des points qu'elle implique (qui est infinie !) n'a pas besoin d'être spécifiée dans ta classe.

Du coup, sur le même principe que ta classe point tu aurais :

public class Segment {
	Point a;
	Point b;
	
	public Point(Point a, Point b){
		this.a=a;
		this.b=b;
	}
}

Finalement, tu savais déjà faire ;-)
2
Merci de ta réponse!

Si j'avais mis l'ensemble des points c'est parce que je veux savoir aussi si un point fait parti d'un segment, ou bien si deux segment se croisent. il faut que je rajoute des fonctions mathématiques dans ce genre?

public class Line {
	Point a;
	Point b;
	
	public Line(Point a, Point b){
		this.a=a;
		this.b=b;
	}

      public Point croisement(Line ab, Line cd) {
		//formules de maths qui retourne un point
	}
	
	public void appartient(Point a, Line cd){
		//oui ou non
	}


}
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
14 janv. 2014 à 18:15
Oui, pour ce genre de besoins ce sont les méthodes qu'il faut utiliser, modifier la structure de l'objet n'apporterait rien de plus.
Pour les formules tu peux regarder le lien que l'on t'as donné. Attention cependant à ne pas confondre une ligne et un segment et à bien prévoir les cas où il n'y a pas d'intersection.
Il faudra aussi revoir les signatures de tes méthodes car telles quelles elles sont fausses.
0
Merci!
Les signatures? c'est à dire?
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
14 janv. 2014 à 19:57
Les signatures c'est le type de retour, le type des arguments, et les mots clés de la méthode.
C'est la partie visible de la classe (contrairement au code qui n'est pas directement accessible).

public Point croisement(Line ab, Line cd)

La méthode s'applique déjà à l'objet courant qui est de type Line, donc il faudrait un seul argument Line, si tu en as deux ça veut dire que tu fais l'intersection de trois lignes...

public void appartient(Point a, Line cd)

Même principe, l'argument de type Line rentre en conflit avec l'objet courant, en plus ici tu as un type de retour à void ce qui ne correspond pas à l'objectif de ta méthode.

Tes signatures devraient être :

public Point croisement(Line cd)
public boolean appartient(Point p)

Ou éventuellement avec le mot clé static, mais ça ne se justifie pas vraiment ici.

public static Point croisement(Line ab, Line cd)
public static boolean appartient(Point a, Line cd)
0
okay merci beaucoup!
0