Salome HOME
Updated copyright comment
[modules/hexablock.git] / src / HEXABLOCK / HexVertex.hxx
old mode 100755 (executable)
new mode 100644 (file)
index 6cd017f..3f09040
@@ -1,12 +1,12 @@
 
-// Class : Gestion des sommets 
+// Class : Gestion des sommets
 
-// Copyright (C) 2009-2012  CEA/DEN, EDF R&D
+// Copyright (C) 2009-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 
 BEGIN_NAMESPACE_HEXA
 
-class Vertex : public EltBase 
+class HexaExport Vertex : public EltBase
 {
 public :
    double getX()   { return v_x; }
    double getY()   { return v_y; }
    double getZ()   { return v_z; }
-   double getCoord (int dir);
 
+   void setX (double v)   { v_x = v ; }
+   void setY (double v)   { v_y = v ; }
+   void setZ (double v)   { v_z = v ; }
+
+   double getAssoX ()   { return is_associated ? gc_x : v_x ; }
+   double getAssoY ()   { return is_associated ? gc_y : v_y ; }
+   double getAssoZ ()   { return is_associated ? gc_z : v_z ; }
+
+   int  setAssociation   (NewShape* geom, int subid);
+   void clearAssociation ();
+
+   void setColor (double valeur)       { v_scalar = valeur ; }
+
+   Vertex (Document* prev, double x, double y, double z);
+
+#ifndef SWIG
+public : 
+   double getCoord (int dir);
    virtual int     countVertex ()       { return 1; }
    virtual Vertex* getVertex (int nro)  { return this; }
 
+                                                   // Hexa5
+   int  setAssociation (VertexShape* forme);
+   int  setAssociation (double* point);
+   int  setAssociation (double px, double py, double pz);
 
-   void setX (double v)   { v_x = v ; }
-   void setY (double v)   { v_y = v ; }
-   void setZ (double v)   { v_z = v ; }
-   void assoCoord (double x, double y, double z);
-   void assoCoord (double* pnt); 
+   VertexShape* getAssoVertex ()              { return v_shape ;}
+   VertexShape* getAssociation ()             { return v_shape ;}
+
+   void   getAssoCoord (double &x, double &y, double &z);
+   void   getAssoCoord (double* point);
+
+   static void anaVertices (Vertices& cont, double tmin[], double tmax[], double center[]);
 
 public :
-   Vertex (Document* prev, double x=0.0, double y=0.0, double z=0.0); 
-   Vertex (Document* cible, Vertex* other);
    Vertex (Vertex* other);
    virtual ~Vertex () {}
    virtual void dump () ;
    virtual void saveXml (XmlWriter* xml);
 
-   void    setScalar (double val)             { v_scalar = val ; }
+   void    setScalar (double val)             { setColor (val) ; }
    double  getScalar ()                       { return v_scalar ; }
-   void    setColor  (double valeur)          { setScalar (valeur) ; }
    double* getPoint (double point[]);
 
    void setCoord  (double x, double y, double z);
-   bool isin      (double xmin, double xmax, double ymin, double ymax, 
+   void setCoord  (double point[]) { setCoord (point[0], point[1], point[2]); }
+
+   bool isin      (double xmin, double xmax, double ymin, double ymax,
                                             double zmin, double zmax);
-   Edge* getParent (int nro); 
-   Vertex* makeSymetric (Vertex* other);
-   void    translate (Vector* vecteur, double fact=1.0);
-   void    replace   (Vertex* old);
+   Edge* getParent (int nro);
+   void  translate (Vector* vecteur, double fact=1.0);
+   void  replace   (Vertex* old);
 
    Vertex* getClone ()              {  return v_clone ; }
    void    duplicate (Document* doc);
 
    static Vertex* createMiddle (Vertex* left, Vertex* right);
    bool   definedBy (double px, double py, double pz, double eps2=1e-4);
+   double dist2 (Vertex* other);
 
 private :
     double v_x;
@@ -81,107 +102,8 @@ private :
     double  v_scalar;
     Vertex* v_clone;
     double  gc_x, gc_y, gc_z;
-    bool    gc_ass;
+    VertexShape*  v_shape;
+#endif
 };
-// ========================================================= Constructeur bis 
-inline Vertex::Vertex (Vertex* other)
-      : EltBase (other->dad(), EL_VERTEX)
-{
-   if (other!= NULL)
-      {
-      v_x = other->v_x;
-      v_y = other->v_y;
-      v_z = other->v_z;
-      v_scalar = other->v_scalar;
-      gc_ass = other->gc_ass;
-      gc_x   = other->gc_x;
-      gc_y   = other->gc_y;
-      gc_z   = other->gc_z;
-      }
-   else 
-      {
-      v_x  = v_y  = v_z  = 0;
-      gc_x = gc_y = gc_z = 0;
-      v_scalar = 0;
-      gc_ass = false;
-      }
-}
-// ===================================================== getCoord
-inline double Vertex::getCoord (int dir) 
-{
-   double val = 0;
-   switch (dir)
-          {
-          case dir_x : val = v_x; 
-               break;
-          case dir_y : val = v_y; 
-               break;
-          case dir_z : val = v_z; 
-               break;
-          }
-   return val;
-}
-// ========================================================= dump 
-inline void Vertex::dump ()
-{
-   printName (" = ");
-   if (NOT isHere ())
-      {
-      printf ("(*** deleted ***)\n");
-      return;
-      }
-
-   printf ("(%g, %g, %g)", v_x,v_y,v_z);
-   dumpRef ();
-}
-// ========================================================= setCoord 
-inline void Vertex::setCoord (double x, double y, double z)
-{
-   v_x = x;
-   v_y = y;
-   v_z = z;
-}
-// ========================================================= assoCoord 
-inline void Vertex::assoCoord (double* coord)
-{
-   assoCoord (coord[dir_x], coord[dir_y], coord[dir_z]);
-}
-// ========================================================= assoCoord 
-inline void Vertex::assoCoord (double x, double y, double z)
-{
-   gc_ass = true;
-   gc_x = x;
-   gc_y = y;
-   gc_z = z;
-}
-// ========================================================= isin 
-inline bool Vertex::isin  (double xmin, double xmax, double ymin, double ymax, 
-                                             double zmin, double zmax)
-{
-   bool   rep =   v_x >= xmin && v_x <= xmax
-               && v_y >= ymin && v_y <= ymax
-               && v_z >= zmin && v_z <= zmax;
-   return rep;
-}
-// ========================================================= getPoint
-inline double* Vertex::getPoint (double point[])
-{
-   point [dir_x] = v_x;
-   point [dir_y] = v_y;
-   point [dir_z] = v_z;
-   return point;
-}
-// ========================================================= duplicate 
-inline void Vertex::duplicate (Document* cible)
-{
-   v_clone = new Vertex (cible, v_x, v_y, v_z);
-   v_clone->v_scalar = v_scalar;
-}
-// ========================================================= duplicate 
-inline bool Vertex::definedBy (double px, double py, double pz, double eps2)
-{
-   double dist2 = carre (v_x-px) + carre (v_y-py) + carre (v_z-pz);
-   return dist2 < eps2;
-}
 END_NAMESPACE_HEXA
 #endif