static Matrix GetIntegratedBasisMatrix(Triangle triangle, List <Point> points) { double triangleSquare = MinimalAngleAlgorithm.getTriangleSquare(triangle, points); double[ , ] res = new double[3, 3] { { 2, 1, 1 }, { 1, 2, 1 }, { 1, 1, 2 }, }; return((2 * triangleSquare) / 24.0 * (new Matrix(res))); }
static Matrix FormatGrammMatrix(Triangle triangle, List <Point> points, Matrix A) { double triangleSquare = 2 * MinimalAngleAlgorithm.getTriangleSquare(triangle, points); Matrix res = new Matrix(3, 3); Point p1 = points[triangle.A]; Point p2 = points[triangle.B]; Point p3 = points[triangle.C]; double bi = p2.Y - p3.Y; double ci = p3.X - p2.X; double bj = p3.Y - p1.Y; double cj = p1.X - p3.X; double bm = p1.Y - p2.Y; double cm = p2.X - p1.X; res[0, 0] = 1 / (2.0 * triangleSquare) * (A[0, 0] * bi * bi + A[1, 1] * ci * ci); res[0, 1] = res[1, 0] = 1 / (2.0 * triangleSquare) * (A[0, 0] * bi * bj + A[1, 1] * ci * cj); res[0, 2] = res[2, 0] = 1 / (2.0 * triangleSquare) * (A[0, 0] * bi * bm + A[1, 1] * ci * cm); res[1, 1] = 1 / (2.0 * triangleSquare) * (A[0, 0] * bj * bj + A[1, 1] * cj * cj); res[1, 2] = res[2, 1] = 1 / (2.0 * triangleSquare) * (A[0, 0] * bj * bm + A[1, 1] * cj * cm); res[2, 2] = 1 / (2.0 * triangleSquare) * (A[0, 0] * bm * bm + A[1, 1] * cm * cm); return(res); }