~ubuntu-branches/debian/squeeze/gmsh/squeeze

« back to all changes in this revision

Viewing changes to contrib/Netgen/libsrc/csg/polyhedra.hpp

  • Committer: Bazaar Package Importer
  • Author(s): Christophe Prud'homme
  • Date: 2009-01-07 16:02:08 UTC
  • mfrom: (5.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20090107160208-vklhtj69br5yw5bh
Tags: 2.2.6.dfsg-2
* debian/control: fixed lintian warning "debhelper-but-no-misc-depends"
* debian/watch: fixed lintian warning
  "debian-watch-file-should-mangle-version"

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#ifndef FILE_POLYHEDRA
2
 
#define FILE_POLYHEDRA
3
 
 
4
 
 
5
 
/**************************************************************************/
6
 
/* File:   polyhedra.hh                                                   */
7
 
/* Author: Joachim Schoeberl                                              */
8
 
/* Date:   19. Mar. 2000                                                  */
9
 
/**************************************************************************/
10
 
 
11
 
/*
12
 
 
13
 
  Polyhedral primitive
14
 
  
15
 
*/
16
 
 
17
 
class Polyhedra : public Primitive
18
 
{
19
 
  class Face {
20
 
  public:
21
 
    int pnums[3];
22
 
    int planenr;
23
 
 
24
 
    Box<3> bbox;
25
 
    //    Point<3> center;
26
 
    Vec<3> v1, v2;   // edges
27
 
    Vec<3> w1, w2;   // pseudo-inverse
28
 
    Vec<3> n;        // normal to face
29
 
    Vec<3> nn;       // normed normal
30
 
 
31
 
    Face () { ; }
32
 
    Face (int pi1, int pi2, int pi3, const ARRAY<Point<3> > & points);
33
 
  };
34
 
 
35
 
  ARRAY<Point<3> > points;
36
 
  ARRAY<Face> faces;
37
 
  ARRAY<Plane*> planes;
38
 
 
39
 
public:
40
 
  Polyhedra ();
41
 
  virtual ~Polyhedra ();
42
 
  static Primitive * CreateDefault ();
43
 
 
44
 
  virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const;
45
 
  virtual INSOLID_TYPE PointInSolid (const Point<3> & p,
46
 
                                     double eps) const;
47
 
  virtual INSOLID_TYPE VecInSolid (const Point<3> & p,
48
 
                                   const Vec<3> & v,
49
 
                                   double eps) const;
50
 
 
51
 
  // checks if lim s->0 lim t->0  p + t(v1 + s v2) in solid
52
 
  virtual INSOLID_TYPE VecInSolid2 (const Point<3> & p,
53
 
                                    const Vec<3> & v1,
54
 
                                    const Vec<3> & v2,
55
 
                                    double eps) const;
56
 
 
57
 
  virtual int GetNSurfaces() const 
58
 
    { return planes.Size(); }
59
 
  virtual Surface & GetSurface (int i) 
60
 
    { return *planes[i]; }
61
 
  virtual const Surface & GetSurface (int i) const
62
 
    { return *planes[i]; }
63
 
 
64
 
  virtual void GetPrimitiveData (char *& classname, ARRAY<double> & coeffs) const;
65
 
  virtual void SetPrimitiveData (ARRAY<double> & coeffs);
66
 
 
67
 
  virtual void Reduce (const BoxSphere<3> & box);
68
 
  virtual void UnReduce ();
69
 
 
70
 
  int AddPoint (const Point<3> & p);
71
 
  int AddFace (int pi1, int pi2, int pi3);
72
 
  
73
 
protected:
74
 
  int FaceBoxIntersection (int fnr, const BoxSphere<3> & box) const;
75
 
  //  void CalcData();
76
 
};
77
 
 
78
 
#endif