Add bounding box calculation to triangle..

Could be helpful XD
This commit is contained in:
Godzil
2020-02-26 02:17:57 +00:00
parent 1c00077949
commit 7a96d42874
3 changed files with 28 additions and 0 deletions

View File

@@ -33,6 +33,18 @@ public:
if (this->max.z < b.max.z) { this->max.z = b.max.z; }
}
void operator|(const Tuple &b) {
isReset = false;
if (this->min.x > b.x) { this->min.x = b.x; }
if (this->min.y > b.y) { this->min.y = b.y; }
if (this->min.z > b.z) { this->min.z = b.z; }
if (this->max.x < b.x) { this->max.x = b.x; }
if (this->max.y < b.y) { this->max.y = b.y; }
if (this->max.z < b.z) { this->max.z = b.z; }
}
bool haveFiniteBounds() { return this->min.isRepresentable() && this->max.isRepresentable(); };
bool fitsIn(const BoundingBox &other) {

View File

@@ -23,6 +23,8 @@ public:
public:
Triangle(Point p1, Point p2, Point p3);
BoundingBox getBounds();
};
#endif /* DORAYME_TRIANGLE_H */

View File

@@ -55,3 +55,17 @@ Tuple Triangle::localNormalAt(Tuple point)
{
return this->normal;
}
BoundingBox Triangle::getBounds()
{
BoundingBox ret;
ret | p1;
ret | p2;
ret | p3;
ret.min = this->objectToWorld(ret.min);
ret.max = this->objectToWorld(ret.max);
return ret;
}