1
/////////////////////////////////////////////////////////////
3
// Copyright (c) 2007-2011 by The University of Queensland //
4
// Earth Systems Science Computational Centre (ESSCC) //
5
// http://www.uq.edu.au/esscc //
7
// Primary Business: Brisbane, Queensland, Australia //
8
// Licensed under the Open Software License version 3.0 //
9
// http://www.opensource.org/licenses/osl-3.0.php //
11
/////////////////////////////////////////////////////////////
13
#ifndef __TRIWITHLINES2D_H
14
#define __TRIWITHLINES2D_H
16
// --- Project includes ---
17
#include "AVolume2D.h"
19
// --- STL includes ---
23
// --- IO includes ---
34
A class for the generation of random particles inside a triangle. An arbitrary number
35
of lines can be added to which the particles are fitted.
37
class TriWithLines2D : public AVolume2D
45
double m_a0,m_a1,m_a2;
46
double m_b0,m_b1,m_b2;
47
double m_c0,m_c1,m_c2;
48
vector<Line2D> m_lines;
49
double m_random(double,double)const;
53
// TriWithLines2D(const Vector3&,const Vector3&);
54
TriWithLines2D(const Vector3&,const Vector3&,const Vector3&);
55
virtual ~TriWithLines2D(){};
57
void addLine(const Line2D&);
58
virtual pair<Vector3,Vector3> getBoundingBox();
59
virtual Vector3 getAPoint(int)const;
60
virtual bool hasPlane() const{return (m_lines.size()>0);};
61
virtual Line2D getClosestPlane(const Vector3&);
62
virtual const map<double,const Line2D*> getClosestPlanes(const Vector3&,int) const;
63
virtual bool isIn(const Vector3&) const;
64
virtual bool isIn(const Sphere&);
66
friend ostream& operator<< (ostream&, const TriWithLines2D&);
68
#endif // __TRIWITHLINES2D_H