108 lines
4.5 KiB
Java
108 lines
4.5 KiB
Java
|
|
// 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);
|
|
}
|
|
|
|
} |