Add bounding box calculation to triangle..
Could be helpful XD
This commit is contained in:
@@ -33,6 +33,18 @@ public:
|
|||||||
if (this->max.z < b.max.z) { this->max.z = b.max.z; }
|
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 haveFiniteBounds() { return this->min.isRepresentable() && this->max.isRepresentable(); };
|
||||||
|
|
||||||
bool fitsIn(const BoundingBox &other) {
|
bool fitsIn(const BoundingBox &other) {
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
Triangle(Point p1, Point p2, Point p3);
|
Triangle(Point p1, Point p2, Point p3);
|
||||||
|
BoundingBox getBounds();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* DORAYME_TRIANGLE_H */
|
#endif /* DORAYME_TRIANGLE_H */
|
||||||
|
|||||||
@@ -55,3 +55,17 @@ Tuple Triangle::localNormalAt(Tuple point)
|
|||||||
{
|
{
|
||||||
return this->normal;
|
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;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user