void pbrtTransform(Float tr[16]) { VERIFY_INITIALIZED("Transform"); FOR_ACTIVE_TRANSFORMS( curTransform[i] = Transform(Matrix4x4( tr[0], tr[4], tr[8], tr[12], tr[1], tr[5], tr[9], tr[13], tr[2], tr[6], tr[10], tr[14], tr[3], tr[7], tr[11], tr[15]));) }
void pbrtLookAt(Float ex, Float ey, Float ez, Float lx, Float ly, Float lz, Float ux, Float uy, Float uz) { VERIFY_INITIALIZED("LookAt"); Transform lookAt = LookAt(Point3f(ex, ey, ez), Point3f(lx, ly, lz), Vector3f(ux, uy, uz)); FOR_ACTIVE_TRANSFORMS(curTransform[i] = curTransform[i] * lookAt;);
void pbrtScale(Float sx, Float sy, Float sz) { VERIFY_INITIALIZED("Scale"); FOR_ACTIVE_TRANSFORMS(curTransform[i] = curTransform[i] * Scale(sx, sy, sz);) }
void pbrtRotate(Float angle, Float dx, Float dy, Float dz) { VERIFY_INITIALIZED("Rotate"); FOR_ACTIVE_TRANSFORMS(curTransform[i] = curTransform[i] * Rotate(angle, Vector3f(dx, dy, dz));) }
void pbrtTranslate(Float dx, Float dy, Float dz) { VERIFY_INITIALIZED("Translate"); FOR_ACTIVE_TRANSFORMS(curTransform[i] = curTransform[i] * Translate(Vector3f(dx, dy, dz));) }
void pbrtIdentity() { VERIFY_INITIALIZED("Identity"); FOR_ACTIVE_TRANSFORMS(curTransform[i] = Transform();) }