Dados los vértices de un tetraedro. La tarea es determinar el volumen de ese tetraedro usando determinantes.
Acercarse:
1. Dados los cuatro vértices del tetraedro (x1, y1, z1), (x2, y2, z2), (x3, y3, z3) y (x4, y4, z4). Con estos vértices, cree una array (4 × 4) en la que los tripletes de coordenadas formen las columnas de la array, con una fila adicional con cada valor como 1 adjunto en la parte inferior.
x1 x2 x3 x4 y1 y2 y3 y4 z1 z2 z3 z4 1 1 1 1
2. Para una array de 4 × 4 que tiene una fila de 1 en la parte inferior, podemos usar la fórmula de simplificación dada para reducirla a una array (3 × 3).
x1-x4 x2-x4 x3-x4 y1-y4 y2-y4 y3-y4 z1-z4 z2-z4 z3-z4
3. El volumen del tetraedro es igual a 1/6 veces el valor absoluto del determinante de la array calculado anteriormente .
Ejemplos:
Input: x1=9, x2=3, x3=7, x4=9, y1=5, y2=0, y3=4, y4=6, z1=1, z2=0, z3=3, z4=0 Output: Volume of the Tetrahedron Using Determinants: 3.0 Input: x1=6, x2=8, x3=5, x4=9, y1=7, y2=1, y3=7, y4=1, z1=6, z2=9, z3=2, z4=6 Output: Volume of the Tetrahedron Using Determinants: 7.0
Java
// Java program to find the volume of a // tetrahedron using determinants import java.io.*; class VolumeOfADeterminant { public static double determinant(double m[][], int n) { double dt = 0; // if the matrix has only // one element if (n == 1) { dt = m[0][0]; } // if the matrix has 4 elements // find determinant else if (n == 2) { dt = m[0][0] * m[1][1] - m[1][0] * m[0][1]; } else { dt = 0; for (int j1 = 0; j1 < n; j1++) { double[][] w = new double[n - 1][]; for (int k = 0; k < (n - 1); k++) { w[k] = new double[n - 1]; } for (int i = 1; i < n; i++) { int j2 = 0; for (int j = 0; j < n; j++) { if (j == j1) continue; w[i - 1][j2] = m[i][j]; j2++; } } dt += Math.pow(-1.0, 1.0 + j1 + 1.0) * m[0][j1] * determinant(w, n - 1); } } return dt; } public static void main(String args[]) { // Input the vertices int x1 = 5, x2 = 8, x3 = 1, x4 = 9, y1 = 5, y2 = 0, y3 = 7, y4 = 8, z1 = 8, z2 = 3, z3 = 4, z4 = 1; // create a 4 * 4 matrix double[][] m = new double[4][4]; // Create a matrix of that vertices m[0][0] = x1; m[0][1] = x2; m[0][2] = x3; m[0][3] = x4; m[1][0] = y1; m[1][1] = y2; m[1][2] = y3; m[1][3] = y4; m[2][0] = z1; m[2][1] = z2; m[2][2] = z3; m[2][3] = z4; m[3][0] = 1; m[3][1] = 1; m[3][2] = 1; m[3][3] = 1; // Converting the 4x4 matrix into 3x3 double[][] m1 = new double[3][3]; m1[0][0] = x1 - x4; m1[0][1] = x2 - x4; m1[0][2] = x3 - x4; m1[1][0] = y1 - y4; m1[1][1] = y2 - y4; m1[1][2] = y3 - y4; m1[2][0] = z1 - z4; m1[2][1] = z2 - z4; m1[2][2] = z3 - z4; // find (determinant/6) double deter = determinant(m1, 3) / 6; // if determinant is negative if (deter < 0) System.out.println( "Volume of the Tetrahedron Using Determinants: " + (deter * -1)); else System.out.println( "Volume of the Tetrahedron Using Determinants: " + (deter * -1)); } }
Volume of the Tetrahedron Using Determinants: 52.333333333333336
Publicación traducida automáticamente
Artículo escrito por manvi_jain14 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA