Loading pom.xml +27 −1 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <junit.version>5.10.0</junit.version> <spark.version>3.5.1</spark.version> <scala.version>2.13.13</scala.version> </properties> <dependencies> Loading Loading @@ -43,8 +45,32 @@ <groupId>org.apache.commons</groupId> <artifactId>commons-math3</artifactId> <version>3.6.1</version> <type>pom</type> </dependency> <!-- https://mvnrepository.com/artifact/org.scala-lang/scala-library --> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>${scala.version}</version> </dependency> <!-- Spark Core for general Spark functionality --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.13</artifactId> <version>${spark.version}</version> </dependency> <!-- Spark MLLib for machine learning --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-mllib_2.13</artifactId> <version>${spark.version}</version> <scope>provided</scope> </dependency> </dependencies> <build> Loading src/main/java/Shape/MovingObject.java +39 −10 Original line number Diff line number Diff line Loading @@ -9,16 +9,10 @@ import javafx.scene.shape.CullFace; import javafx.scene.shape.MeshView; import javafx.scene.shape.TriangleMesh; import javafx.scene.transform.Translate; //import org.apache.commons.math3.ml.clustering.KMeansPlusPlusClusterer; //import org.apache.commons.math3.ml.clustering.DoublePoint; //import org.apache.commons.math3.ml.clustering.Cluster; import java.util.ArrayList; import java.util.List; import java.io.*; import java.util.*; import java.util.HashMap; import java.util.HashSet; import java.util.Map; /** * Represents a moving object in a 3D space with deformable capabilities. Loading Loading @@ -360,7 +354,42 @@ public class MovingObject { // dirtyTranslate = false; // } // } // public void setCentroid() { // if (dirtyTranslate) { // // Initialize Spark Context // SparkConf conf = new SparkConf().setAppName("KMeansCentroidCalculation").setMaster("local[*]"); // JavaSparkContext sc = new JavaSparkContext(conf); // // // Prepare your data from the readFile object // float[] vertices = fileObject.getVertices(); // List<Vector> points = new ArrayList<>(); // for (int i = 0; i < vertices.length; i += 3) { // double[] point = new double[]{ // vertices[i], // X coordinate // vertices[i+1], // Y coordinate // vertices[i+2] // Z coordinate // }; // points.add(Vectors.dense(point)); // } // // // Parallelize the data // JavaRDD<Vector> pointsRDD = sc.parallelize(points); // // // Cluster the data into two classes using KMeans // int numClusters = 100; // for example, 100 clusters // int numIterations = 20; // number of iterations // KMeansModel model = KMeans.train(pointsRDD.rdd(), numClusters, numIterations); // // // Get the centroid coordinates // Vector[] centroids = model.clusterCenters(); // for (int i = 0; i < centroids.length; i++) { // System.out.println("Cluster " + i + " centroid:" + centroids[i].toString()); // } // // // Stop the Spark context // sc.stop(); // } // } /** * Retrieves the updated centroid of the object considering its translation. Loading src/main/java/org/example/newmat/GraphicsAndWindowsTest.java +4 −4 Original line number Diff line number Diff line Loading @@ -286,10 +286,10 @@ public class GraphicsAndWindowsTest extends Application { y = min(y, 50); // Calculate new coordinates based on the rotation of the camera double cosX = Math.cos(Math.toRadians(groupRotX.getAngle())); double sinX = Math.sin(Math.toRadians(groupRotX.getAngle())); double cosY = Math.cos(Math.toRadians(groupRotY.getAngle())); double sinY = Math.sin(Math.toRadians(groupRotY.getAngle())); double cosX = Math.cos(Math.toRadians(abs(groupRotX.getAngle()))); double sinX = Math.sin(Math.toRadians(abs(groupRotX.getAngle()))); double cosY = Math.cos(Math.toRadians(abs(groupRotY.getAngle()))); double sinY = Math.sin(Math.toRadians(abs(groupRotY.getAngle()))); // Apply transformations double newX = x * cosY + z * sinY; Loading src/main/java/org/example/newmat/MillionTriangle.java +6 −5 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import javafx.stage.Stage; import java.io.IOException; import static java.lang.Math.abs; import static java.lang.Math.min; Loading Loading @@ -243,10 +244,10 @@ public class MillionTriangle extends Application { y = min(y, 50); // Calculate new coordinates based on the rotation of the camera double cosX = Math.cos(Math.toRadians(groupRotX.getAngle())); double sinX = Math.sin(Math.toRadians(groupRotX.getAngle())); double cosY = Math.cos(Math.toRadians(groupRotY.getAngle())); double sinY = Math.sin(Math.toRadians(groupRotY.getAngle())); double cosX = Math.cos(Math.toRadians(abs(groupRotX.getAngle()))); double sinX = Math.sin(Math.toRadians(abs(groupRotX.getAngle()))); double cosY = Math.cos(Math.toRadians(abs(groupRotY.getAngle()))); double sinY = Math.sin(Math.toRadians(abs(groupRotY.getAngle()))); // Apply transformations double newX = x * cosY + z * sinY; Loading Loading @@ -392,7 +393,7 @@ public class MillionTriangle extends Application { direction[i][1] += 1; } else { y = direction[i][1] - (meshBounds[i].getMaxY() + direction[i][1] - (winTopYBound + WindowSize)); if (Math.abs(direction[i][1]) > 10) { if (abs(direction[i][1]) > 10) { objects[i].deformShape(1, 1, direction[i][1]); } } Loading target/classes/Graph/AdjacencyMatrix.classdeleted 100644 → 0 −1.54 KiB File deleted. View file Loading
pom.xml +27 −1 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <junit.version>5.10.0</junit.version> <spark.version>3.5.1</spark.version> <scala.version>2.13.13</scala.version> </properties> <dependencies> Loading Loading @@ -43,8 +45,32 @@ <groupId>org.apache.commons</groupId> <artifactId>commons-math3</artifactId> <version>3.6.1</version> <type>pom</type> </dependency> <!-- https://mvnrepository.com/artifact/org.scala-lang/scala-library --> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>${scala.version}</version> </dependency> <!-- Spark Core for general Spark functionality --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.13</artifactId> <version>${spark.version}</version> </dependency> <!-- Spark MLLib for machine learning --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-mllib_2.13</artifactId> <version>${spark.version}</version> <scope>provided</scope> </dependency> </dependencies> <build> Loading
src/main/java/Shape/MovingObject.java +39 −10 Original line number Diff line number Diff line Loading @@ -9,16 +9,10 @@ import javafx.scene.shape.CullFace; import javafx.scene.shape.MeshView; import javafx.scene.shape.TriangleMesh; import javafx.scene.transform.Translate; //import org.apache.commons.math3.ml.clustering.KMeansPlusPlusClusterer; //import org.apache.commons.math3.ml.clustering.DoublePoint; //import org.apache.commons.math3.ml.clustering.Cluster; import java.util.ArrayList; import java.util.List; import java.io.*; import java.util.*; import java.util.HashMap; import java.util.HashSet; import java.util.Map; /** * Represents a moving object in a 3D space with deformable capabilities. Loading Loading @@ -360,7 +354,42 @@ public class MovingObject { // dirtyTranslate = false; // } // } // public void setCentroid() { // if (dirtyTranslate) { // // Initialize Spark Context // SparkConf conf = new SparkConf().setAppName("KMeansCentroidCalculation").setMaster("local[*]"); // JavaSparkContext sc = new JavaSparkContext(conf); // // // Prepare your data from the readFile object // float[] vertices = fileObject.getVertices(); // List<Vector> points = new ArrayList<>(); // for (int i = 0; i < vertices.length; i += 3) { // double[] point = new double[]{ // vertices[i], // X coordinate // vertices[i+1], // Y coordinate // vertices[i+2] // Z coordinate // }; // points.add(Vectors.dense(point)); // } // // // Parallelize the data // JavaRDD<Vector> pointsRDD = sc.parallelize(points); // // // Cluster the data into two classes using KMeans // int numClusters = 100; // for example, 100 clusters // int numIterations = 20; // number of iterations // KMeansModel model = KMeans.train(pointsRDD.rdd(), numClusters, numIterations); // // // Get the centroid coordinates // Vector[] centroids = model.clusterCenters(); // for (int i = 0; i < centroids.length; i++) { // System.out.println("Cluster " + i + " centroid:" + centroids[i].toString()); // } // // // Stop the Spark context // sc.stop(); // } // } /** * Retrieves the updated centroid of the object considering its translation. Loading
src/main/java/org/example/newmat/GraphicsAndWindowsTest.java +4 −4 Original line number Diff line number Diff line Loading @@ -286,10 +286,10 @@ public class GraphicsAndWindowsTest extends Application { y = min(y, 50); // Calculate new coordinates based on the rotation of the camera double cosX = Math.cos(Math.toRadians(groupRotX.getAngle())); double sinX = Math.sin(Math.toRadians(groupRotX.getAngle())); double cosY = Math.cos(Math.toRadians(groupRotY.getAngle())); double sinY = Math.sin(Math.toRadians(groupRotY.getAngle())); double cosX = Math.cos(Math.toRadians(abs(groupRotX.getAngle()))); double sinX = Math.sin(Math.toRadians(abs(groupRotX.getAngle()))); double cosY = Math.cos(Math.toRadians(abs(groupRotY.getAngle()))); double sinY = Math.sin(Math.toRadians(abs(groupRotY.getAngle()))); // Apply transformations double newX = x * cosY + z * sinY; Loading
src/main/java/org/example/newmat/MillionTriangle.java +6 −5 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import javafx.stage.Stage; import java.io.IOException; import static java.lang.Math.abs; import static java.lang.Math.min; Loading Loading @@ -243,10 +244,10 @@ public class MillionTriangle extends Application { y = min(y, 50); // Calculate new coordinates based on the rotation of the camera double cosX = Math.cos(Math.toRadians(groupRotX.getAngle())); double sinX = Math.sin(Math.toRadians(groupRotX.getAngle())); double cosY = Math.cos(Math.toRadians(groupRotY.getAngle())); double sinY = Math.sin(Math.toRadians(groupRotY.getAngle())); double cosX = Math.cos(Math.toRadians(abs(groupRotX.getAngle()))); double sinX = Math.sin(Math.toRadians(abs(groupRotX.getAngle()))); double cosY = Math.cos(Math.toRadians(abs(groupRotY.getAngle()))); double sinY = Math.sin(Math.toRadians(abs(groupRotY.getAngle()))); // Apply transformations double newX = x * cosY + z * sinY; Loading Loading @@ -392,7 +393,7 @@ public class MillionTriangle extends Application { direction[i][1] += 1; } else { y = direction[i][1] - (meshBounds[i].getMaxY() + direction[i][1] - (winTopYBound + WindowSize)); if (Math.abs(direction[i][1]) > 10) { if (abs(direction[i][1]) > 10) { objects[i].deformShape(1, 1, direction[i][1]); } } Loading