GlistEngine
Loading...
Searching...
No Matches
gBoundingBox.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2016 Nitra Games Ltd.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef GRAPHICS_GBOUNDINGBOX_H_
18#define GRAPHICS_GBOUNDINGBOX_H_
19
20#include <algorithm>
21#include "gRenderObject.h"
22#include "gRay.h"
23#define GLM_ENABLE_EXPERIMENTAL
24#define GLM_FORCE_DEFAULT_ALIGNED_GENTYPES
25#include <glm/glm.hpp>
26#include <glm/gtc/matrix_transform.hpp>
27#include <glm/gtx/quaternion.hpp>
28
29
37public:
39 gBoundingBox(float minX, float minY, float minZ, float maxX, float maxY, float maxZ);
40 gBoundingBox(float minX, float minY, float minZ, float maxX, float maxY, float maxZ, glm::mat4 transformationMatrix);
42 virtual ~gBoundingBox();
43
44 void set(float minX, float minY, float minZ, float maxX, float maxY, float maxZ);
45 void set(const gBoundingBox& b);
46
47 static bool intersects(float minX1, float minY1, float minZ1, float maxX1, float maxY1, float maxZ1, float minX2, float minY2, float minZ2, float maxX2, float maxY2, float maxZ2);
48 static bool intersects(const gBoundingBox& b1, const gBoundingBox& b2);
49
50 bool intersects(float minX, float minY, float minZ, float maxX, float maxY, float maxZ) const;
51 bool intersects(const gBoundingBox& b) const;
52
53 static bool contains(float minX1, float minY1, float minZ1, float maxX1, float maxY1, float maxZ1, float minX2, float minY2, float minZ2, float maxX2, float maxY2, float maxZ2);
54 static bool contains(const gBoundingBox& b1, const gBoundingBox& b2);
55
56 bool contains(float minX, float minY, float minZ, float maxX, float maxY, float maxZ) const;
57 bool contains(const gBoundingBox& b) const;
58 bool contains(float x, float y, float z) const;
59
60 gBoundingBox merge(const gBoundingBox& other) const;
61
62 gBoundingBox offset(const glm::vec3& offset) const;
63
64 bool intersects(gRay& ray) const;
65 float distance(gRay& ray) const;
66 bool intersects(gRay* ray) const;
67 float distance(gRay* ray) const;
68
69 const glm::vec3& getMin() const;
70 const glm::vec3& getMax() const;
71 float minX() const;
72 float minY() const;
73 float minZ() const;
74 float maxX() const;
75 float maxY() const;
76 float maxZ() const;
77 float getWidth() const;
78 float getHeight() const;
79 float getDepth() const;
80 const glm::vec3& getOrigin() const;
81
82 void setTransformationMatrix(const glm::mat4& matrix);
83 bool intersectsOBB(gRay* ray) const;
84 float distanceOBB(gRay* ray) const;
85
86 void draw() const;
87 void drawOBB() const;
88
89private:
90 static const int componentnum = 3;
91 glm::vec3 minf, maxf;
92 float width, height, depth;
93 float widthhalf, heighthalf, depthhalf;
94 glm::vec3 origin;
95 glm::mat4 transformationmatrix;
96
97};
98
99#endif /* GRAPHICS_GBOUNDINGBOX_H_ */
Definition gBoundingBox.h:36
virtual ~gBoundingBox()
void set(const gBoundingBox &b)
bool intersects(gRay &ray) const
float minX() const
static bool contains(float minX1, float minY1, float minZ1, float maxX1, float maxY1, float maxZ1, float minX2, float minY2, float minZ2, float maxX2, float maxY2, float maxZ2)
bool contains(float x, float y, float z) const
gBoundingBox(float minX, float minY, float minZ, float maxX, float maxY, float maxZ)
const glm::vec3 & getOrigin() const
bool contains(float minX, float minY, float minZ, float maxX, float maxY, float maxZ) const
const glm::vec3 & getMin() const
void set(float minX, float minY, float minZ, float maxX, float maxY, float maxZ)
static bool intersects(float minX1, float minY1, float minZ1, float maxX1, float maxY1, float maxZ1, float minX2, float minY2, float minZ2, float maxX2, float maxY2, float maxZ2)
float maxZ() const
void setTransformationMatrix(const glm::mat4 &matrix)
gBoundingBox(const gBoundingBox &b)
bool intersects(float minX, float minY, float minZ, float maxX, float maxY, float maxZ) const
float distance(gRay &ray) const
float getWidth() const
bool intersects(gRay *ray) const
const glm::vec3 & getMax() const
float minZ() const
float minY() const
void drawOBB() const
float maxX() const
gBoundingBox offset(const glm::vec3 &offset) const
float getDepth() const
static bool contains(const gBoundingBox &b1, const gBoundingBox &b2)
float distanceOBB(gRay *ray) const
gBoundingBox(float minX, float minY, float minZ, float maxX, float maxY, float maxZ, glm::mat4 transformationMatrix)
bool intersects(const gBoundingBox &b) const
float getHeight() const
bool intersectsOBB(gRay *ray) const
float maxY() const
bool contains(const gBoundingBox &b) const
float distance(gRay *ray) const
gBoundingBox merge(const gBoundingBox &other) const
void draw() const
static bool intersects(const gBoundingBox &b1, const gBoundingBox &b2)
Definition gRay.h:32
Definition gRenderObject.h:25
float b
Definition gColor.h:22