diff options
| author | Don Bright <hugh.m.bright@gmail.com> | 2011-12-24 13:50:24 (GMT) | 
|---|---|---|
| committer | Don Bright <hugh.m.bright@gmail.com> | 2011-12-24 13:50:24 (GMT) | 
| commit | 3572251a9139bf95f2217c2e9957668b6c82ccdc (patch) | |
| tree | c2dfdef220b78f0d2cf86f37f99e3bf36477f19e /src | |
| parent | 10c96326866c8256e82f0092a18f4f4e3ca06a74 (diff) | |
commit Marius' linalg.cc
Diffstat (limited to 'src')
| -rw-r--r-- | src/linalg.cc | 27 | 
1 files changed, 27 insertions, 0 deletions
| diff --git a/src/linalg.cc b/src/linalg.cc new file mode 100644 index 0000000..30f23af --- /dev/null +++ b/src/linalg.cc @@ -0,0 +1,27 @@ +#include "linalg.h" + +// FIXME: We can achieve better pruning by either: +// o Recalculate the box based on the transformed object +// o Store boxes are oriented bounding boxes and implement oriented +//   bbox intersection + +// FIXME: This function can be generalized, but we don't need it atm. + +/*! +	Transforms the given bounding box by transforming each of its 8 vertices. +	Returns a new bounding box. +*/ +BoundingBox operator*(const Transform3d &m, const BoundingBox &box) +{ +	BoundingBox newbox; +	Vector3d boxvec[2] = { box.min(), box.max() }; +	for (int k=0;k<2;k++) { +		for (int j=0;j<2;j++) { +			for (int i=0;i<2;i++) { +				newbox.extend(m * Vector3d(boxvec[i][0], boxvec[j][1], boxvec[k][2])); +			} +		} +	} +	return newbox; +} + | 
