//---------------------------------------------------------------------------------------------
        //Матрица вращения для точек окружности
        private RealMatrix GetRotationMatrix(Point3D[] circlePoints)
        {
            //PlaneDescriptor circlePointsPlane = this.GetPlane( circlePoints );

            PlaneApproximator planeApproximator = new PlaneApproximator();
            PlaneDescriptor   circlePointsPlane = planeApproximator.Approximate(circlePoints);

            this.CirclePointsPlane = circlePointsPlane; //debug

            RealVector circlePointsPlaneNormalVector = circlePointsPlane.GetNormalVector();
            RealVector vectorN        = new RealVector(1, 1, 1);
            RealMatrix rotationMatrix = SpaceManager.GetRotationMatrixToTargetVector
                                            (circlePointsPlaneNormalVector, vectorN);

            return(rotationMatrix);
        }
Exemple #2
0
        //---------------------------------------------------------------------------------------------
        protected Point3D[] GetParallelToCoordinatePlanePoints3D(
            RealMatrix[] interferograms, Point[] imagePoints
            )
        {
            //Ортогональные векторы
            RealVector[] orthogonalVectors = this.GetOrthogonalVectors(interferograms, imagePoints);
            Point3D[]    points3D          = this.GetPoints3D(orthogonalVectors);
            this.OrthogonalVectorsPoints = points3D;

            //Перемещение в первый октант
            points3D = SpaceManager.DisplacePointsToFirstOctant(points3D);

            PlaneDescriptor planeDescriptor   = this.GetPlane(points3D);
            RealVector      planeNormalVector = planeDescriptor.GetNormalVector();

            points3D = this.RotateParallelToPlaneXY(points3D, planeNormalVector);
            return(points3D);
        }