/// <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; }