 |
Irrlicht 3D Engine
|
|
Go to the documentation of this file.
5 #ifndef __IRR_AABBOX_3D_H_INCLUDED__
6 #define __IRR_AABBOX_3D_H_INCLUDED__
32 aabbox3d(T minx, T miny, T minz, T maxx, T maxy, T maxz):
MinEdge(minx, miny, minz),
MaxEdge(maxx, maxy, maxz) {}
130 return e.
X * e.
Y * e.
Z;
137 return 2*(e.
X*e.
Y + e.
X*e.
Z + e.
Y*e.
Z);
160 edges[0].
set(middle.
X + diag.
X, middle.
Y + diag.
Y, middle.
Z + diag.
Z);
161 edges[1].
set(middle.
X + diag.
X, middle.
Y - diag.
Y, middle.
Z + diag.
Z);
162 edges[2].
set(middle.
X + diag.
X, middle.
Y + diag.
Y, middle.
Z - diag.
Z);
163 edges[3].
set(middle.
X + diag.
X, middle.
Y - diag.
Y, middle.
Z - diag.
Z);
164 edges[4].
set(middle.
X - diag.
X, middle.
Y + diag.
Y, middle.
Z + diag.
Z);
165 edges[5].
set(middle.
X - diag.
X, middle.
Y - diag.
Y, middle.
Z + diag.
Z);
166 edges[6].
set(middle.
X - diag.
X, middle.
Y + diag.
Y, middle.
Z - diag.
Z);
167 edges[7].
set(middle.
X - diag.
X, middle.
Y - diag.
Y, middle.
Z - diag.
Z);
259 if ((fabs(t.
X) > e.
X + halflength * fabs(linevect.
X)) ||
260 (fabs(t.
Y) > e.
Y + halflength * fabs(linevect.
Y)) ||
261 (fabs(t.
Z) > e.
Z + halflength * fabs(linevect.
Z)) )
264 T r = e.
Y * (T)fabs(linevect.
Z) + e.
Z * (T)fabs(linevect.
Y);
265 if (fabs(t.
Y*linevect.
Z - t.
Z*linevect.
Y) > r )
268 r = e.
X * (T)fabs(linevect.
Z) + e.
Z * (T)fabs(linevect.
X);
269 if (fabs(t.
Z*linevect.
X - t.
X*linevect.
Z) > r )
272 r = e.
X * (T)fabs(linevect.
Y) + e.
Y * (T)fabs(linevect.
X);
273 if (fabs(t.
X*linevect.
Y - t.
Y*linevect.
X) > r)
289 if (plane.
Normal.X > (T)0)
295 if (plane.
Normal.Y > (T)0)
301 if (plane.
Normal.Z > (T)0)
307 if (plane.
Normal.dotProduct(nearPoint) + plane.
D > (T)0)
310 if (plane.
Normal.dotProduct(farPoint) + plane.
D > (T)0)
vector3d< T > getVector() const
Get vector of line.
bool intersectsWithBox(const aabbox3d< T > &other) const
Determines if the axis-aligned box intersects with another axis-aligned box.
vector3d< T > getExtent() const
Get extent of the box (maximal distance of two points in the box)
void reset(T x, T y, T z)
Resets the bounding box to a one-point box.
T getLength() const
Get length of line.
aabbox3d(const vector3d< T > &init)
Constructor with only one point.
aabbox3d< s32 > aabbox3di
Typedef for an integer 3d bounding box.
bool intersectsWithLine(const vector3d< T > &linemiddle, const vector3d< T > &linevect, T halflength) const
Tests if the box intersects with a line.
aabbox3d()
Default Constructor.
void repair()
Repairs the box.
vector3d< T > & set(const T nx, const T ny, const T nz)
bool isPointInside(const vector3d< T > &p) const
Determines if a point is within this box.
EIntersectionRelation3D classifyPlaneRelation(const plane3d< T > &plane) const
Classifies a relation with a plane.
bool operator!=(const aabbox3d< T > &other) const
Inequality operator.
3D line between two points with intersection methods.
T Y
Y coordinate of the vector.
void reset(const vector3d< T > &initValue)
Resets the bounding box to a one-point box.
EIntersectionRelation3D
Enumeration for intersection relations of 3d objects.
T Z
Z coordinate of the vector.
float f32
32 bit floating point variable.
vector3d< T > getMiddle() const
Get middle of line.
void addInternalBox(const aabbox3d< T > &b)
Adds another bounding box.
vector3d< T > getCenter() const
Get center of the bounding box.
aabbox3d(T minx, T miny, T minz, T maxx, T maxy, T maxz)
Constructor with min edge and max edge as single values, not vectors.
T getArea() const
Get the surface area of the box in squared units.
T getVolume() const
Get the volume enclosed by the box in cubed units.
bool operator==(const aabbox3d< T > &other) const
Equality operator.
bool isEmpty() const
Check if the box is empty.
vector3d< T > Normal
Normal vector of the plane.
Everything in the Irrlicht Engine can be found in this namespace.
vector3d< T > MaxEdge
The far edge.
void addInternalPoint(T x, T y, T z)
Adds a point to the bounding box.
bool isFullInside(const aabbox3d< T > &other) const
Check if this box is completely inside the 'other' box.
void getEdges(vector3d< T > *edges) const
Stores all 8 edges of the box into an array.
void addInternalPoint(const vector3d< T > &p)
Adds a point to the bounding box.
void reset(const aabbox3d< T > &initValue)
Resets the bounding box.
bool isPointTotalInside(const vector3d< T > &p) const
Determines if a point is within this box and not its borders.
aabbox3d< f32 > aabbox3df
Typedef for a f32 3d bounding box.
bool intersectsWithLine(const line3d< T > &line) const
Tests if the box intersects with a line.
vector3d< T > MinEdge
The near edge.
aabbox3d< T > getInterpolated(const aabbox3d< T > &other, f32 d) const
Calculates a new interpolated bounding box.
Axis aligned bounding box in 3d dimensional space.
3d vector template class with lots of operators and methods.
Template plane class with some intersection testing methods.
aabbox3d(const vector3d< T > &min, const vector3d< T > &max)
Constructor with min edge and max edge.
T X
X coordinate of the vector.