Lorsque vous prenez l'union de deux polygones alors vous obtenez un objet chemin que vous avez déclaré. Il est possible de convertir cet objet path en un objet Polygon (pas le code le plus agréable mais faisable).
//createing both polygon objects p1 and p2
Polygon p1 = new Polygon();
p1.getPoints().addAll(new Double[]{
0.0, 0.0,
20.0, 10.0,
10.0, 20.0 });
Polygon p2 = new Polygon();
p2.getPoints().addAll(new Double[]{
10.0, 0.0,
25.0, 10.0,
5.0, 20.0 });
// Taking the union that results in a Path object
Path p3 = (Path) Polygon.union(p1, p2);
// Array of points for the new polygon
Double[] points = new Double[(p3.getElements().size() - 1)*2];
int i = 0;
// going through all the path elements in the path and adding the x and y coordinates to points
for(PathElement el : p3.getElements()){
if(el instanceof MoveTo){
MoveTo mt = (MoveTo) el;
points[i] = mt.getX();
points[i+1] = mt.getY();
}
if(el instanceof LineTo){
LineTo lt = (LineTo) el;
points[i] = lt.getX();
points[i+1] = lt.getY();
}
i += 2;
}
// creating new Polygon with these points
Polygon newPolygon = new Polygon();
newPolygon.getPoints().addAll(points);
Ceci peut ne pas fonctionner si les polygones ne se croisent pas, mais devraient fonctionner autrement. S'il n'y a pas d'intersection, vous aurez deux instructions MoveTo au lieu d'une.
Pourquoi la sortie doit-elle être un objet de classe Polygon? – Sedrick
@SedrickJefferson Nous avons un programme qui visualise ces polygones sur la scène. Le polygone uni doit être un objet de classe Polygon pour pouvoir interpréter toutes les autres règles et conditions qui ont été définies pour les objets de classe Polygon. – Brita
Je ne pense pas que vous serez capable d'utiliser Path. Je pense qu'ils ont construit Path.union avec l'idée que si vous fusionnez deux formes du même type, le résultat ne sera pas une forme du type original. Exemple Polygon union Polygon! = Polygon. Ceci étant dit. Je pense que vous devriez créer votre propre méthode d'union. Cela prend deux polygones et renvoie un polygone qui correspond à vos idées. – Sedrick