Exemplo n.º 1
0
        //-------------------------------------------------------------------------------------------
        //-------------------------------------------------------------------------------------------
        public double[] Compute(
            Point pointOne,
            Point pointTwo,
            int interferogramIndexOne,
            int interferogramIndexTwo
            )
        {
            TrajectoryCreator trajectoryCreator = new TrajectoryCreator(this.interferograms);
            Curve2D           trajectory        = trajectoryCreator.GetTrajectory(pointOne, pointTwo);

            Point2D[] points = trajectory.GetPoints();
            this.TrajectoryPoints = points;
            EllipseApproximator ellipseApproximator = new EllipseApproximator();
            EllipseDescriptor   ellipseDescriptor   = ellipseApproximator.Approximate(points);
            Point2D             ellipseCentre       = ellipseDescriptor.GetCentre();

            points = PlaneManager.DisplacePoints(points, -ellipseCentre.X, -ellipseCentre.Y);

            double x0 = points[0].X;
            double y0 = points[0].Y;
            double x1 = points[interferogramIndexOne].X;
            double y1 = points[interferogramIndexOne].Y;
            double x2 = points[interferogramIndexTwo].X;
            double y2 = points[interferogramIndexTwo].Y;

            double[] phaseShifts = this.GetPhaseShifts(x0, y0, x1, y1, x2, y2);
            return(phaseShifts);
        }
Exemplo n.º 2
0
        //-------------------------------------------------------------------------------------------
        //Вычислить фазовые сдвиги
        public double[] Compute(
            Point pointOne,
            Point pointTwo
            )
        {
            TrajectoryCreator trajectoryCreator = new TrajectoryCreator(this.interferograms);
            Curve2D           trajectory        = trajectoryCreator.GetTrajectory(pointOne, pointTwo);

            IntensitiesForPointOne = trajectory.GetArrayX();

            EllipseApproximator approximator = new EllipseApproximator();

            Point2D[] trajectoryPoints = trajectory.GetPoints();
            this.TrajectoryPoints = trajectoryPoints;
            QuadricCurveDescriptor approximatingQuadricCurve = approximator.Approximate(trajectoryPoints);
            EllipseDescriptor      approximatingEllipse      = approximatingQuadricCurve as EllipseDescriptor;

            double startX  = 0;
            double finishX = 255;
            double step    = 1;

            this.EllipsePoints = approximatingEllipse.GetPoints(startX, finishX, step);

            Curve2D transformedTrajectory =
                this.TransformateTrajectory(trajectory, approximatingEllipse);

            double[] phaseShifts          = this.CalculatePhaseShifts(transformedTrajectory);
            double[] correctedPhaseShifts = this.CorrectPhaseShifts(phaseShifts);
            return(correctedPhaseShifts);
        }
Exemplo n.º 3
0
        //------------------------------------------------------------------------------------------
        //Получить траекторию
        public static Curve2D GetTrajectory(
            Point pointOne, Point pointTwo,
            params RealMatrix[] interferograms
            )
        {
            TrajectoryCreator trajectoryCreator = new TrajectoryCreator(interferograms);
            Curve2D           trajectory        = trajectoryCreator.GetTrajectory(pointOne, pointTwo);

            return(trajectory);
        }