2010-11-01 7 views
1

Je vérifie intersection de deux objets .. et j'ai un MBR de classe avec des données meembers faible [2] et élevé [2] .. mais je ne suis pas getiing intersect..c une explication de cette fonction ..intersection de la fonction

intersects(const MBR* h) const 
{ 
for (int i = 0; i < 2; i++) 
{ 
    if (low_[i] > h->high_[i] || high_[i] < h->low_[i]) 
    return FALSE; 
} 
return TRUE; 
+0

Qu'entendez-vous par "intersection"? C'est à dire. qu'espères-tu arriver? (C'est pourquoi les noms non descriptifs comme "MBR" sont mauvais) –

+0

Par "mais je ne suis pas en train de croiser", je pense qu'il demande ce que fait la fonction "croise". Ce pourrait juste être une fonction avec un nom coïncident. – irrelephant

+0

@irrelephant: Hmm .. J'analyse cela comme "Je ne reçois pas le calcul que j'attends, qui devrait être l'intersection". Mais je suppose que ça pourrait être aussi "je ne comprends pas l'intersection" ... Je suppose que c'est le problème de ne pas prendre le temps de ne pas utiliser l'argot dans les questions - cela conduit à des ambiguïtés. –

Répondre

3

intersects compare un MBR à un autre MBR et retourne FALSE si l'une des valeurs dans la première low[] de MBR sont supérieures aux valeurs (dans les indices respectifs) dans la seconde high[] ou de MBR si l'une des valeurs dans les high[] premiers MBR sont inférieures aux valeurs (dans les indices respectifs) dans le deuxième MBR low[]. Sinon, il retourne TRUE.

+0

+1 - parce que c'est la bonne réponse en supposant la traduction correcte de "je ne reçois pas intersection "est" Je ne comprends pas ce que calcule la fonction "intersection". Si l'OP répond en indiquant que c'est son sens, je vais également supprimer ma réponse. –

+0

mais cette fonction trouve-t-elle une intersection? et MBR est en fait la boîte de délimitation minimum – piyapiya

+0

@piyapiya: cela ressemble plus à vouloir dire "inclusion" qu'à "intersection". C'est à dire. vous dites que les deux points définissent un quadrilatère, et que vous voulez savoir si un tel quadrilatère peut tenir dans un autre. –

1

Vous ne savez pas exactement ce que vous entendez par intersection. Si vous parlez d'intersection d'ensembles, vous devriez probablement utiliser std::set_intersection plutôt que d'essayer de mettre en œuvre ce genre de chose vous-même. Rappelez-vous que std::set_intersection exige que l'entrée soit déjà triée.

+0

mais dans mon cas, l'utilisateur donne deux points p1 et p2 sous la forme de x et y .. maintenant je veux trouver intersection .. si vous connaissez le modèle d'intersection 9 et boîte de délimitation minimale MBR que vous aurez comprendre ce que je veux faire .. mais je ne reçois pas cette fonction ... comment son intersection de recherche avec ma classe MBR (deux membres de données bas [2] et haut [2]) .. – piyapiya

+0

et une chose de plus je Je ne comprends pas l'utilisation de const à l'intérieur de la fonction, au début et à la fin du prototype de la fonction. SVP renvoyez-moi un lien lié à l'utilisation de const seulement .. – piyapiya

+0

@piyapiya: Je ne connais pas de concept mathématique qui parle de deux points pouvant "se croiser". Deux lignes ou rayons, ou segments de ligne, peut-être, mais pas de points. –

1

Si la bordure supérieure d'une boîte est plus petite que la bordure inférieure d'une autre boîte, les deux boîtes ne se croisent pas. De même, si la bordure inférieure d'une boîte est plus grande que la bordure supérieure de l'autre boîte. Sinon, les deux boîtes se croisent.

Cette vérification est effectuée pour les coordonnées X et Y.