//------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------- 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); }
//------------------------------------------------------------------------------------------- //Вычислить фазовые сдвиги 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); }
//------------------------------------------------------------------------------------------ //Получить траекторию public static Curve2D GetTrajectory( Point pointOne, Point pointTwo, params RealMatrix[] interferograms ) { TrajectoryCreator trajectoryCreator = new TrajectoryCreator(interferograms); Curve2D trajectory = trajectoryCreator.GetTrajectory(pointOne, pointTwo); return(trajectory); }