Ejemplo n.º 1
0
        public static bool Point2DtoPoint3D(Viewport3D viewport, Point ptIn, out LineRange range)
        {
            range = new LineRange();

            Point3D  pointIn      = new Point3D(ptIn.X, ptIn.Y, 0);
            Matrix3D matxViewport = GetViewportTransform(viewport);
            Matrix3D matxCamera   = GetCameraTransform(viewport);

            if (!matxViewport.HasInverse)
            {
                return(false);
            }

            if (!matxCamera.HasInverse)
            {
                return(false);
            }

            matxViewport.Invert();
            matxCamera.Invert();

            Point3D pointNormalized = matxViewport.Transform(pointIn);

            pointNormalized.Z = 0.01;
            Point3D pointNear = matxCamera.Transform(pointNormalized);

            pointNormalized.Z = 0.99;
            Point3D pointFar = matxCamera.Transform(pointNormalized);

            range = new LineRange(pointNear, pointFar);

            return(true);
        }
Ejemplo n.º 2
0
        private Point3D GetPoint3D(Point pt, Viewport3D viewportArg)
        {
            Point3D point3D = new Point3D();
            var range = new LineRange();
            var isValid = ViewportInfo.Point2DtoPoint3D(viewportArg, pt, out range);
            if (isValid)
            {
                point3D = range.PointFromZ(0);
            }

            return point3D;
        }
Ejemplo n.º 3
0
        public static bool Point2DtoPoint3D(Viewport3D viewport, Point ptIn, out LineRange range)
        {
            range = new LineRange();

            Point3D pointIn = new Point3D(ptIn.X, ptIn.Y, 0);
            Matrix3D matxViewport = GetViewportTransform(viewport);
            Matrix3D matxCamera = GetCameraTransform(viewport);

            if (!matxViewport.HasInverse)
                return false;

            if (!matxCamera.HasInverse)
                return false;

            matxViewport.Invert();
            matxCamera.Invert();

            Point3D pointNormalized = matxViewport.Transform(pointIn);
            pointNormalized.Z = 0.01;
            Point3D pointNear = matxCamera.Transform(pointNormalized);
            pointNormalized.Z = 0.99;
            Point3D pointFar = matxCamera.Transform(pointNormalized);

            range = new LineRange(pointNear, pointFar);

            return true;
        }
Ejemplo n.º 4
0
 public override IEditor StartEdit(Point startPos, Petzold.Media3D.LineRange startRay)
 {
     return(new Editor(startPos, startRay, this));
 }