Definition plan dans l'espace

bumbob Messages postés 11 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 23 octobre 2009 - 20 avril 2009 à 15:34
bumbob Messages postés 11 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 23 octobre 2009 - 21 avril 2009 à 15:18
Bonjour,

je débute en programmation c++. Je cherche à définir un plan, sans le tracer, dans l'espace. Il doit être défini de manière continue. Pour cela, je dispose des coordonnées du vecteur normal a ce plan et d'un point du plan. Mathématique le plan est defini par une equation de la forme ax+by+cz+d=0 avec [a,b,c] un vecteur normal au plan.
Comment puis ecrire cela en code c++ ?

Merci d'avance.

6 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
20 avril 2009 à 18:47
Salut,

Bin une classe "Plan" ou ce que tu veux avec des champs a, b et c et d.
Ou une classe "Plan" contenant une instance de classe "Vecteur" et une instance de classe "Point"...

Tout dépend de ce que tu veux faire par la suite...
0
bumbob Messages postés 11 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 23 octobre 2009
20 avril 2009 à 18:53
Merci pour votre réponse,

mon souci est dans l'ecriture meme de cette classe. Je ne sais comment la construire. Par la suite, je souhaite utiliser des fonctions de la bibliotheque sisl pour determiner les intersections de ce plan avec des courbes. Des fonctions permettant de faire cel sont deja definies dans la bibliotheque.
Je voudrais donc simplement savoir comment je peux faire pour, partant du vecteur orthogonal et du point, obtenir un plan.

Merci encore.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
20 avril 2009 à 19:08
Je ne sais comment la construire.



Tu as des bases en C++ ? Un tuto sur les classes.

Je voudrais donc simplement savoir comment je peux faire pour, partant du vecteur orthogonal et du point, obtenir un plan

Ca, c'est des maths, pas de la prog. Même wikipedia a la solution ici.
0
bumbob Messages postés 11 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 23 octobre 2009
21 avril 2009 à 12:26
Bonjour,

mon niveau en c++ est très faible. Cependant, ce n'est pas la partie mathématique du probleme qui me fera défaut.
Je comprend, avec le tuto sur les classes comment définir un vecteur, avec sorties des coordonnées. Mais je ne vois pas comment on peut étendre cela a une définition de plan. Mathématiquement, je sais comment définir le plan avec les coordonnées d'un vecteur normal et un point. Mais comment générer ce plan en langage c++ afin de l'utiliser ensuite en tant que surface.
Je suppose qu'il va falloir du void car rien en sortie, mais ensuite...

Ou alors, pouvez vous m'orienter vers un site d'aide en c++ specifique aux applications en geometrie.

Merci.

 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
21 avril 2009 à 14:46
Comment dire...

On est pas dans matrix !

Avoir une classe plan, c'est avoir une classe qui contient des information sur ce plan et des méthodes pour manipuler ces informations. C'est pas un objet dans un univers 3D infini où je ne sais quoi d'autre. Un processeur de PC ça sait déplacer de la mémoire et faire plus, moins, multiplier et c'est tout. Et encore, il peut se tromper dans les résultats. Pour afficher des trucs à l'écran, il écrit des données précises à des emplacement précis de la mémoire qui correspondent à des bus. Pour faire ça dans du code, il faut utiliser une librairie quelconque de graphisme.

Si tu regardes la doc de SISL, les fonctions traitant des plans prennent en paramètre des points et des normales pour la définition de plan. Il suffit donc que ta classe contienne ces informations.

Un bête truc dans ce genre :
<hr size="2" width="100%" />#include

using namespace std;

class Point
{
  private:
    double _x;
    double _y;
    double _z;
  public:
    Point(double x, double y, double z):
      _x(x), _y(y), _z(z) {}
    void setX(double x) { _x = x; }
    void setY(double y) { _y = y; }
    void setZ(double z) { _z = z; }
    double getX() { return _x; }
    double getY() { return _y; }
    double getZ() { return _z; }
};

class Vector: public Point
{
  public:
    Vector(double x, double y, double z):
      Point(x, y, z) {}
};

class Plan
{
  private:
    Vector _normale;
    Point _point;
  public:
      Plan(Vector normale, Point point):
        _normale(normale), _point(point) {}
};

int main()
{
  Vector normale(12, 12, 12);
  Point point(11, 11, 13);
  Plan plan(normale, point);
  return 0;
}
<hr size="2" width="100%" />Faut pas non plus chercher à faire une classe plan qui permet de faire tout un tas de truc que l'on utilisera jamais. Faut faire ce dont on a besoin.

La doc de SISL contient un exemple de programme et la doc de toutes les fonctions.
Un cours sur le C++ en français.

PS : SISL propose des fonctions C. Tu peux faire du C donc. Plus simple que le C++.
0
bumbob Messages postés 11 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 23 octobre 2009
21 avril 2009 à 15:18
Je devrais m'en sortir avec cela.

Un grand merci pour cette aide détaillée.

Bon apres midi.
0
Rejoignez-nous