/// <summary>
 /// Gets line (in camera space) from point on near plane to corresponding point on far plane.
 /// </summary>
 public static Line3d Unproject(this ICameraProjection self, Ndc2d p)
 {
     return(new Line3d(
                self.UnprojectPointOnNearPlane(p),
                self.UnprojectPointOnFarPlane(p)
                ));
 }
        /// <summary>
        /// Scales clipping window by given factor.
        /// </summary>
        public static void Zoom(this ICameraProjection self, V2d center, double factor)
        {
            if (factor <= 0.0)
            {
                throw new ArgumentException("Factor needs to be greater than 0.0, but is " + factor + ".", "factor");
            }
            var box = self.ClippingWindow;

            box.Min.X           = (box.Min.X - center.X) * factor + center.X;
            box.Min.Y           = (box.Min.Y - center.Y) * factor + center.Y;
            box.Max.X           = (box.Max.X - center.X) * factor + center.X;
            box.Max.Y           = (box.Max.Y - center.Y) * factor + center.Y;
            self.ClippingWindow = box;
        }
 /// <summary>
 /// Gets normalized device coordinates from point in camera space.
 /// </summary>
 public static Ndc3d TransformPos(this ICameraProjection self, V3d posInCameraSpace)
 {
     return(new Ndc3d(self.ProjectionTrafo.Forward.TransformPosProj(posInCameraSpace)));
 }
 /// <summary>
 /// Gets point on far plane (in camera space) from point in normalized device coordinates.
 /// </summary>
 public static V3d UnprojectPointOnFarPlane(this ICameraProjection self, Ndc2d p)
 {
     return(self.ProjectionTrafo.Backward.TransformPosProj(new V3d(p.Position, 1.0)));
 }
 /// <summary>
 /// Gets point (in camera space) from point in normalized device coordinates.
 /// </summary>
 public static V3d Unproject(this ICameraProjection self, Ndc3d p)
 {
     return(self.ProjectionTrafo.Backward.TransformPosProj(p.Position));
 }
Exemple #6
0
 /// <summary>
 /// Gets point on near plane (in camera space) from point in normalized device coordinates.
 /// </summary>
 public static V3d UnprojectPointOnNearPlane(this ICameraProjection self, Ndc2d p)
 => self.ProjectionTrafo.Backward.TransformPosProj(new V3d(p.Position, 0.0));