2012-12-07 1 views
0

Je ne peux vraiment pas trouver une ressource de savoir comment calculer la zone de délimitation d'un ensemble de points. J'ai un tableau float/int de points pour lequel je souhaite calculer le bounding box (je veux connaître tous les quatre coins du rectangle du bounding box). Comment puis-je accomplir cela?zone de délimitation orientée - Android

+0

voulez-vous savoir si le toucher est à l'intérieur du rectangle ou pas ? –

+0

J'ai une vue de superposition de geste dans un rectangle ... je veux trouver la boîte de délimitation pour le geste –

Répondre

1

Vous pouvez boucle à travers le réseau:

int minX = Integer.MAX_VALUE, minY, maxX, maxY = Integer.MAX_VALUE; 

for (int i=0;i<myArray.length;i++){ 
    if (myArray[i].x > maxX){ 
     maxX = myArray[i].x; 
    } else if (myArray[i].x < minX) { 
     minX = myArray[i].x; 
    } else if (myArray[i].y > maxY){ 
     maxY = myArray[i].y; 
    } else (myArray[i].y < minY) { 
     minY = myArray[i].y;(
    } 
} 

Vous n'avez pas dit quel genre de liste que vous utilisez (tableau de points ou autre) de sorte que vous devrez ajuster myArray[i].y et maxY = Integer.MAX_VALUE au besoin.

0

Computing AABB (boîte de délimitation axe aligné) est relativement insignifiante. Triez juste les points dans chaque axe, trouvez le minimum de chaque axe. L'intersection des 4 lignes de ces points est votre rectangle AAB.

Le calcul OBB (bounding box) est légèrement non trivial. Heureusement, il existe une méthode sur GestureUtils qui fait exactement cela, à savoir:

GestureUtils.computeOrientedBoundingBox(float[] points)

Faites passer votre réseau de flotteurs de points et la vie est bonne :)

Questions connexes