示例#1
0
        }                                                  //Матрица перехода из данной системы координат в глобальную

        public ReferenceFrame(Point o, Vector x, Vector y, Vector z)
        {
            O           = o;
            XAxis       = x;
            YAxis       = y;
            ZAxis       = z;
            TransMatrix = new double[3, 3];
            MatrixHandler.SetRow(0, TransMatrix, new double[] { XAxis.X, YAxis.X, ZAxis.X });
            MatrixHandler.SetRow(1, TransMatrix, new double[] { XAxis.Y, YAxis.Y, ZAxis.Y });
            MatrixHandler.SetRow(2, TransMatrix, new double[] { XAxis.Z, YAxis.Z, ZAxis.Z });
        }
示例#2
0
 public Point Translate(Point spot)
 {
     double[,] A          = MatrixHandler.MatrixInverse(frame.TransMatrix);
     double[,] localO     = new double[3, 1]; //Точка начала местной системы координат в глобальных координатах
     localO[0, 0]         = frame.O.X;
     localO[1, 0]         = frame.O.Y;
     localO[2, 0]         = frame.O.Z;
     double[,] O          = MatrixHandler.Multiply(MatrixHandler.Multiply(A, localO), -1); //Начало глобальных координат в местных координатах
     double[,] spotColumn = new double[3, 1];                                              // Столбец координат данной точки
     spotColumn[0, 0]     = spot.X;
     spotColumn[1, 0]     = spot.Y;
     spotColumn[2, 0]     = spot.Z;
     double[,] localSpot  = MatrixHandler.Sum(O, MatrixHandler.Multiply(A, spotColumn)); // Столбец координат данной точки в местных координатах
     return(new Point(localSpot[0, 0], localSpot[1, 0], localSpot[2, 0]));
 }