Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / OpenFOAM / meshes / boundBox / boundBoxI.H
blob51e75d41a558123ec400e7c948ad0430787ef507
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2010-2010 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by
13     the Free Software Foundation, either version 3 of the License, or
14     (at your option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
26 #include "boundBox.H"
27 #include "pointField.H"
30 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
32 inline Foam::boundBox::boundBox()
34     min_(point::zero),
35     max_(point::zero)
39 inline Foam::boundBox::boundBox(const point& min, const point& max)
41     min_(min),
42     max_(max)
46 inline Foam::boundBox::boundBox(Istream& is)
48     operator>>(is, *this);
52 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
54 inline const Foam::point& Foam::boundBox::min() const
56     return min_;
60 inline const Foam::point& Foam::boundBox::max() const
62     return max_;
66 inline Foam::point& Foam::boundBox::min()
68     return min_;
72 inline Foam::point& Foam::boundBox::max()
74     return max_;
78 inline Foam::point Foam::boundBox::midpoint() const
80     return 0.5 * (max_ + min_);
84 inline Foam::vector Foam::boundBox::span() const
86     return (max_ - min_);
90 inline Foam::scalar Foam::boundBox::mag() const
92     return ::Foam::mag(max_ - min_);
96 inline Foam::scalar Foam::boundBox::volume() const
98     return cmptProduct(span());
102 inline Foam::scalar Foam::boundBox::minDim() const
104     return cmptMin(span());
108 inline Foam::scalar Foam::boundBox::maxDim() const
110     return cmptMax(span());
114 inline Foam::scalar Foam::boundBox::avgDim() const
116     return cmptAv(span());
120 inline bool Foam::boundBox::overlaps(const boundBox& bb) const
122     return
123     (
124         bb.max_.x() >= min_.x() && bb.min_.x() <= max_.x()
125      && bb.max_.y() >= min_.y() && bb.min_.y() <= max_.y()
126      && bb.max_.z() >= min_.z() && bb.min_.z() <= max_.z()
127     );
131 inline bool Foam::boundBox::contains(const point& pt) const
133     return
134     (
135         pt.x() >= min_.x() && pt.x() <= max_.x()
136      && pt.y() >= min_.y() && pt.y() <= max_.y()
137      && pt.z() >= min_.z() && pt.z() <= max_.z()
138     );
142 // this.bb fully contains bb
143 inline bool Foam::boundBox::contains(const boundBox& bb) const
145     return contains(bb.min()) && contains(bb.max());
149 inline bool Foam::boundBox::containsInside(const point& pt) const
151     return
152     (
153         pt.x() > min_.x() && pt.x() < max_.x()
154      && pt.y() > min_.y() && pt.y() < max_.y()
155      && pt.z() > min_.z() && pt.z() < max_.z()
156     );
160 // * * * * * * * * * * * * * * * Friend Operators  * * * * * * * * * * * * * //
162 inline bool Foam::operator==(const boundBox& a, const boundBox& b)
164     return (a.min_ == b.min_) && (a.max_ == b.max_);
168 inline bool Foam::operator!=(const boundBox& a, const boundBox& b)
170     return !(a == b);
174 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //