5
/**************************************************************************/
7
/* Author: Joachim Schoeberl */
8
/* Date: 11. Mar. 98 */
9
/**************************************************************************/
13
brick geometry, has several surfaces
19
class Parallelogram3d : public Surface
21
Point<3> p1, p2, p3, p4;
26
Parallelogram3d (Point<3> ap1, Point<3> ap2, Point<3> ap3);
27
virtual ~Parallelogram3d ();
28
void SetPoints (Point<3> ap1, Point<3> ap2, Point<3> ap3);
30
virtual int IsIdentic (const Surface & s2, int & inv, double eps) const;
32
virtual double CalcFunctionValue (const Point<3> & point) const;
33
virtual void CalcGradient (const Point<3> & point, Vec<3> & grad) const;
34
virtual void CalcHesse (const Point<3> & point, Mat<3> & hesse) const;
35
virtual double HesseNorm () const;
37
virtual Point<3> GetSurfacePoint () const;
38
virtual void Print (ostream & str) const;
40
virtual void GetTriangleApproximation (TriangleApproximation & tas,
41
const Box<3> & boundingbox,
49
class Brick : public Primitive
51
Point<3> p1, p2, p3, p4;
53
ARRAY<OneSurfacePrimitive*> faces;
56
Brick (Point<3> ap1, Point<3> ap2, Point<3> ap3, Point<3> ap4);
58
static Primitive * CreateDefault ();
61
virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const;
62
virtual INSOLID_TYPE PointInSolid (const Point<3> & p,
64
virtual INSOLID_TYPE VecInSolid (const Point<3> & p,
68
virtual int GetNSurfaces() const
70
virtual Surface & GetSurface (int i)
72
virtual const Surface & GetSurface (int i) const
76
virtual void GetPrimitiveData (char *& classname, ARRAY<double> & coeffs) const;
77
virtual void SetPrimitiveData (ARRAY<double> & coeffs);
79
virtual void Reduce (const BoxSphere<3> & box);
80
virtual void UnReduce ();
87
class OrthoBrick : public Brick
92
OrthoBrick (const Point<3> & ap1, const Point<3> & ap2);
94
virtual INSOLID_TYPE BoxInSolid (const BoxSphere<3> & box) const;
95
virtual void Reduce (const BoxSphere<3> & box);