public TransformSet Inverse() { TransformSet tInv = new TransformSet(); for (int i = 0; i < MaxTransforms; ++i) { tInv._t[i] = _t[i].Inverse(); } return(tInv); }
public static Camera MakeCamera( string name, ParamSet paramSet, TransformSet cam2worldSet, double transformStart, double transformEnd, Film film) { Camera camera = null; MediumInterface mediumInterface = new MediumInterface(); // todo: implement graphicsState graphicsState.CreateMediumInterface(); //static_assert(MaxTransforms == 2, // "TransformCache assumes only two transforms"); Transform[] cam2world = new Transform[] { // todo: implement transform cache //transformCache.Lookup(cam2worldSet[0]), //transformCache.Lookup(cam2worldSet[1]) cam2worldSet[0], cam2worldSet[1] }; AnimatedTransform animatedCam2World = new AnimatedTransform( cam2world[0], transformStart, cam2world[1], transformEnd); switch (name) { case "perspective": camera = PerspectiveCamera.Create(paramSet, animatedCam2World, film, mediumInterface.Outside); break; //case "orthographic": // camera = CreateOrthographicCamera(paramSet, animatedCam2World, film, mediumInterface.Outside); // break; //case "realistic": // camera = CreateRealisticCamera(paramSet, animatedCam2World, film, mediumInterface.Outside); // break; //case "environment": // camera = CreateEnvironmentCamera(paramSet, animatedCam2World, film, mediumInterface.Outside); // break; default: //Warning("Camera \"%s\" unknown.", name.c_str()); break; } paramSet.ReportUnused(); return(camera); }