Ejemplo n.º 1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MatrixView"/> class.
 /// </summary>
 /// <param name="cols">The cols.</param>
 /// <param name="rows">The rows.</param>
 /// <param name="readOnly">if set to <c>true</c> [read only].</param>
 public MatrixView(int cols, int rows, bool readOnly)
     : base()
 {
     InitializeComponent();
     _userDefinedMatrix = new UserDefinedMatrix();
     _userDefinedMatrix.image1.Height = rows * 72 + 40;
     _userDefinedMatrix.image2.Height = _userDefinedMatrix.image1.Height;
     _userDefinedMatrix.grid1.Width = cols * 110 + 40;
     _userDefinedMatrix.grid1.Height = _userDefinedMatrix.image1.Height;
     _userDefinedMatrix.image2.Margin =
         new Thickness(_userDefinedMatrix.grid1.Margin.Left + _userDefinedMatrix.grid1.Width + 6,
                       _userDefinedMatrix.image2.Margin.Top, 0, 0);
     _userDefinedMatrix.Width = _userDefinedMatrix.image2.Margin.Left + _userDefinedMatrix.image2.Width + 6;
     _userDefinedMatrix.Height = _userDefinedMatrix.image1.Height + 6;
     _matrix = new MatrixLibrary.Matrix(rows, cols);
     this.scrollViewer1.Content = _userDefinedMatrix;
     for (_i = 0; _i < cols; _i++)
     {
         for (_j = 0; _j < rows; _j++)
         {
             MatrixTextbox matrixTextbox = new MatrixTextbox(_j, _i, readOnly);
             matrixTextbox.Margin = new Thickness(XMargin + (_i * 116), YMargin + (_j * 78), 0, 0);
             matrixTextbox.TextChanged += new TextChangedEventHandler(MatrixTextboxTextChanged);
             _userDefinedMatrix.grid1.Children.Add(matrixTextbox);
         }
     }
 }
 public Matrix GetInverseJacobian(double ksi, double eta)
 {
     Matrix J = GetJacobian(ksi, eta);
     Matrix res = new Matrix(2, 2);
     double det = J.Determinant();
     res[0, 0] = J[1, 1] / det;
     res[1, 1] = J[0, 0] / det;
     res[0, 1] = -J[0, 1] / det;
     res[1, 0] = -J[1, 0] / det;
     return res;
 }
 public Matrix GetJacobian(double ksi, double eta)
 {
     Matrix res = new Matrix(2, 2);
     double x1ksi = 0.25 * ((1 - eta) * (Element[1].Point.X - Element[0].Point.X) + (1 + eta) * (Element[2].Point.X - Element[3].Point.X));
     double x3ksi = 0.25 * ((1 - eta) * (Element[1].Point.Y - Element[0].Point.Y) + (1 + eta) * (Element[2].Point.Y - Element[3].Point.Y));
     double x1eta = 0.25 * ((1 - ksi) * (Element[3].Point.X - Element[0].Point.X) + (1 + ksi) * (Element[2].Point.X - Element[1].Point.X));
     double x3eta = 0.25 * ((1 - ksi) * (Element[3].Point.Y - Element[0].Point.Y) + (1 + ksi) * (Element[2].Point.Y - Element[1].Point.Y));
     res[0, 0] = x1ksi;
     res[1, 0] = x1eta;
     res[0, 1] = x3ksi;
     res[1, 1] = x3eta;
     return res;
 }