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); }
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; }
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; }
public override IEditor StartEdit(Point startPos, Petzold.Media3D.LineRange startRay) { return(new Editor(startPos, startRay, this)); }