void CoordinateFrame::vectorToWorldSpace(const Array<Vector3>& v, Array<Vector3>& vout) const { vout.resize(v.size()); for (int i = v.size() - 1; i >= 0; --i) { vout[i] = vectorToWorldSpace(v[i]); } }
Ray CoordinateFrame::toWorldSpace(const Ray& r) const { Ray ray; ray.setOrigin(pointToWorldSpace(r.getOrigin())); ray.setDirection(vectorToWorldSpace(r.getDirection())); return ray; }
Box CoordinateFrame::toWorldSpace(const Box& b) const { if(!b.isFinite()) { return b; } Box out(b); out._center = pointToWorldSpace(b._center); for (int i = 0; i < 3; ++i) { out._edgeVector[i] = vectorToWorldSpace(out._edgeVector[i]); } out._area = b._area; out._volume = b._volume; return out; }
Box CoordinateFrame::toWorldSpace(const Box& b) const { Box out(b); for (int i = 0; i < 8; ++i) { out._corner[i] = pointToWorldSpace(b._corner[i]); debugAssert(! isNaN(out._corner[i].x)); } for (int i = 0; i < 3; ++i) { out._axis[i] = vectorToWorldSpace(b._axis[i]); } out._center = pointToWorldSpace(b._center); return out; }
Ray CoordinateFrame::toWorldSpace(const Ray& r) const { return Ray::fromOriginAndDirection(pointToWorldSpace(r.origin()), vectorToWorldSpace(r.direction())); }