troussil / convergents

GNU General Public License v3.0
1 stars 1 forks source link

position du point par rapport à la droite. #2

Closed homeostasie closed 11 years ago

homeostasie commented 11 years ago

Dans la fonction : Value operator()(const Point& aPoint) On teste les trois positions du point par rapport à la droite : appartient, en dessous, en dessus.

Je me demande qu'elle est le comportement de la fonction si myX = 0 et que la droite est verticale ?

Souhaites-tu que j'implémente une position appartient, à gauche ou à droite de la droite si myX = 0. (qui pose un problème symétrique si myY = 0)

troussil commented 11 years ago

Les termes sont relatifs, mais il n'y a pas de problèmes particuliers tant que myA et myB ne sont pas tous les deux nuls. Si myA est nul (droite horizontale) ou si myB est nul (droite verticale), myA_x + myB_y + myC renvoie toujours un positionnement.

Le 30 janvier 2013 15:38, Thomas notifications@github.com a écrit :

Dans la fonction : Value operator()(const Point& aPoint) On teste les trois positions du point par rapport à la droite : appartient, en dessous, en dessus.

Je me demande qu'elle est le comportement de la fonction si myX = 0 et que la droite est verticale ?

Souhaites-tu que j'implémente une position appartient, à gauche ou à droite de la droite si myX = 0. (qui pose un problème symétrique si myY = 0)

— Reply to this email directly or view it on GitHubhttps://github.com/troussil/convergents/issues/2.

homeostasie commented 11 years ago

J'ai encore un problème, mais cette fois avec l'utilisation de la fonction. Je pense l'avoir codée correctement :

Value operator()(const Point& aPoint)
    {
      if (myA*aPoint[0] + myB*aPoint[1] + myC == 0){return  0;}
      else
      { 
        return ((myA*aPoint[0] + myB*aPoint[1] + myC) < 0?1:(-1));
      }
    }

Mais par contre, je n'arrive pas à m'en servir pour regarder la position de aS par rapport à notre droite.

Je pensais faire :

Value predicat = *this(aStartingPoint);

Mais cela me crée une erreur à la compilation :

RayIntersectableStraightLine.h:139:44: erreur: ‘this’ cannot be used as a function

Du coup, je ne sais pas trop comment l'utiliser.

troussil commented 11 years ago
  • un opérateur, comme l'operateur(), peut s'utiliser ainsi: this->operator()(aPoint). Mais est-ce nécessaire ici ?
homeostasie commented 11 years ago

C'est en effet plus simple et plus rapide. Je me suis finalement passé de cette fonction pour écrire la suivante.

J'ai également une question mais qui porte plus sur autre chose. Du coup, j'ouvre une nouvelle issue.