// Die nachfolgede Klasse eines Vektor besitzt folgende Methoden: // Scalaremultiplikation // 2D und 3D Kreuzprodukt // Vektorbetrag // Scalarmatrixmultiplikation public class Vector { // Scalaremultiplikation public static void scalarMultiplication(int[] vector, int scalar) { // Falls ein null vector übergeben wird, soll nichts gemacht werden, // sonst würde .length ein Fehler melden if (vector != null) { // Jede Position wird mit dem Scalar multipliziert for (int position = 0; position < vector.length; position++) { vector[position] *= scalar; } } } // 2D und 3D kreuzprodukt public static void vectorProduct(int[] vector1, int[] vector2) { // Sollte eine der beiden Vektoren null sein: Nachricht an die Konsole if (vector1 == null || vector2 == null) { System.out.println("Wegen unterschiedlichen Dimensionen ist das Kreuzprodukt nicht erlaubt"); // Für 3D Kreuzprodukt müssen beide Vektoren die Dimension 3 haben } else if (vector1.length == vector2.length && vector2.length == 3) { int[] kreuzVektor3D = new int[3]; // Berechnung des 3D Kreuzprodukts kreuzVektor3D[0] = (vector1[1] * vector2[2]) - (vector1[2] * vector2[1]); kreuzVektor3D[1] = (vector1[2] * vector2[0]) - (vector1[0] * vector2[2]); kreuzVektor3D[2] = (vector1[0] * vector2[1]) - (vector1[1] * vector2[0]); System.out.println("Ergebnis des 3D Kreuzproduktes: [" + kreuzVektor3D[0] + ", " + kreuzVektor3D[1] + ", " + kreuzVektor3D[2] + "]"); } // Für 2D Kreuzprodukt müssen beide Vektoren die Dimension 2 haben else if (vector1.length == vector2.length && vector2.length == 2) { int kreuzVektor2D = 0; // Berechnung des 2D Kreuzprodukts. Ergebnis ist ein Scalar kreuzVektor2D = (vector1[0] * vector2[1]) - (vector1[1] * vector2[0]); System.out.println("Ergebnis des 2D Kreuzproduktes: " + kreuzVektor2D); } // Bei unterschiedlichen Dimension oder nicht 2D bzw. 3D. Meldung an die Konsole else { System.out.println("Wegen unterschiedlichen Dimensionen ist das Kreuzprodukt nicht erlaubt"); } } // Vektorbetragsbrechnung public static double vectorLength(int[] vector) { // Initialiserung von Quadradsumme und Betrag double qSumme = 0.0; double betrag = 0.0; // Falls der Vektor null ist geht .length nicht if (vector != null) { // Brechnung der Quadratsumme for (int i = 0; i < vector.length; i++) { qSumme = qSumme + (vector[i] * vector[i]); } // Berechnung der Wurzel, um Betrag zu erhalten betrag = Math.sqrt(qSumme); } return betrag; } // Scalarmatrixmultiplikation public static int[][] matrixMultiplication(int[][] matrix, int scalar) { // Initialiserung der Ausgabe int[][] ausgabe; // Falls die Matrix null ist wird null ausgegeben if (matrix == null) { ausgabe = null; // Falls die Matrix 3x3 ist darf das Sclar multipliziert werden } else if (matrix.length == 3 && matrix[0].length == 3 && matrix[1].length == 3 && matrix[2].length == 3) { ausgabe = new int[3][3]; // Alle 9 Kombinationsmöglichkeiten von inneren und äußeren Position wird durchgegangen for (int außenPos = 0; außenPos < matrix.length; außenPos++) { for (int innenPos = 0; innenPos < matrix[außenPos].length; innenPos++) { ausgabe[außenPos][innenPos] = matrix[außenPos][innenPos] * scalar; } } } else { // Sollte keine 3x3 Matrix vorliegen, wird null ausgegeben ausgabe = null; } return ausgabe; } // Für eine schnellere Überprüfung des Codes, ausführlichen Untersuchung // erfolgt via eigene JUnit public static void main(String[] args) { int[] vector = { 2, 4, 7 }; int scalar = 3; scalarMultiplication(vector, scalar); System.out.println(vector[0] + " " + vector[1] + " " + vector[2]); int[] vector1 = { 2, 5, 1 }; int[] vector2 = { 4, 7, 2 }; vectorProduct(vector1, vector2); int[] vector3 = { 2, 5 }; int[] vector4 = { 4, 7 }; vectorProduct(vector3, vector4); } }