_d[1] = v[2] - v[0];
}
- SGVec3d getCenter() const
- {
- SGBoxd box;
- box.expandBy(_v0);
- box.expandBy(_v0 + _d[0]);
- box.expandBy(_v0 + _d[1]);
- return box.getCenter();
- }
+ SGVec3<T> getCenter() const
+ { return _v0 + T(1)/T(3)*(_d[0] + _d[1]); }
// note that the index is unchecked
SGVec3<T> getVertex(unsigned i) const
_d[0] = _d[1];
_d[1] = tmp;
}
+
+ SGTriangle<T> transform(const SGMatrix<T>& matrix) const
+ {
+ SGTriangle<T> triangle;
+ triangle._v0 = matrix.xformPt(_v0);
+ triangle._d[0] = matrix.xformVec(_d[0]);
+ triangle._d[1] = matrix.xformVec(_d[1]);
+ return triangle;
+ }
+
private:
/// Store one vertex directly, _d is the offset of the other two
/// vertices wrt the base vertex