add iteration state logging
This commit is contained in:
parent
4e04ff5fce
commit
702200b220
|
@ -35,5 +35,6 @@ public class App {
|
|||
System.out.println(t.getP1());
|
||||
System.out.println(t.getP2());
|
||||
System.out.println(t.getP3());
|
||||
System.out.println("Iterations needed: " + calc.getStateLog().size());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
package ma2tetr.api;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import ma2tetr.model.IterationState;
|
||||
import ma2tetr.model.Tetrahedron;
|
||||
|
||||
public interface ITetrahedronCoordCalculator {
|
||||
|
@ -11,5 +14,7 @@ public interface ITetrahedronCoordCalculator {
|
|||
void calculate();
|
||||
|
||||
Tetrahedron getTetrahedron();
|
||||
|
||||
List<IterationState> getStateLog();
|
||||
|
||||
}
|
||||
|
|
31
src/main/java/ma2tetr/impl/StateLogger.java
Normal file
31
src/main/java/ma2tetr/impl/StateLogger.java
Normal file
|
@ -0,0 +1,31 @@
|
|||
package ma2tetr.impl;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import ma2tetr.model.Coords3D;
|
||||
import ma2tetr.model.IterationState;
|
||||
import ma2tetr.model.Vector3D;
|
||||
|
||||
public class StateLogger {
|
||||
|
||||
private Coords3D center;
|
||||
private Set<Coords3D> points;
|
||||
private List<IterationState> log;
|
||||
|
||||
public StateLogger(Coords3D center, Set<Coords3D> points, List<IterationState> log) {
|
||||
this.center = center;
|
||||
this.points = points;
|
||||
this.log = log;
|
||||
}
|
||||
|
||||
public void logState() {
|
||||
Set<Coords3D> coords = new HashSet<>();
|
||||
for (Coords3D point : points) {
|
||||
coords.add(Vector3D.createFromPoints(center, point));
|
||||
}
|
||||
log.add(new IterationState(coords));
|
||||
}
|
||||
|
||||
}
|
|
@ -1,12 +1,15 @@
|
|||
package ma2tetr.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import ma2tetr.api.ITetrahedronCoordCalculator;
|
||||
import ma2tetr.invariant.RadiusInvariant;
|
||||
import ma2tetr.invariant.TetrahedronInvariant;
|
||||
import ma2tetr.model.Coords3D;
|
||||
import ma2tetr.model.IterationState;
|
||||
import ma2tetr.model.Point3D;
|
||||
import ma2tetr.model.Tetrahedron;
|
||||
import ma2tetr.model.Vector3D;
|
||||
|
@ -15,6 +18,7 @@ public class TetrahedronMovingCalculator implements ITetrahedronCoordCalculator
|
|||
|
||||
private double radius = 1.0;
|
||||
private Tetrahedron tetrahedron = null;
|
||||
private List<IterationState> log = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void setRadius(double radius) {
|
||||
|
@ -32,6 +36,7 @@ public class TetrahedronMovingCalculator implements ITetrahedronCoordCalculator
|
|||
points.add(triangle.getP1());
|
||||
points.add(triangle.getP2());
|
||||
points.add(triangle.getP3());
|
||||
StateLogger logger = new StateLogger(center, points, log);
|
||||
RadiusInvariant rinv = new RadiusInvariant(points, center, radius);
|
||||
TetrahedronInvariant tinv = new TetrahedronInvariant(top, triangle.getP1(), triangle.getP2(), triangle.getP3());
|
||||
double scaling = radius / 10;
|
||||
|
@ -45,6 +50,7 @@ public class TetrahedronMovingCalculator implements ITetrahedronCoordCalculator
|
|||
triangle.move(-scaling);
|
||||
scaling = scaling / 10;
|
||||
}
|
||||
logger.logState();
|
||||
}
|
||||
tetrahedron = new Tetrahedron(top, triangle.getP1(), triangle.getP2(), triangle.getP3());
|
||||
}
|
||||
|
@ -58,5 +64,10 @@ public class TetrahedronMovingCalculator implements ITetrahedronCoordCalculator
|
|||
public double getRadius() {
|
||||
return this.radius;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<IterationState> getStateLog() {
|
||||
return log;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
package ma2tetr.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import ma2tetr.api.ITetrahedronCoordCalculator;
|
||||
import ma2tetr.invariant.RadiusInvariant;
|
||||
import ma2tetr.invariant.TetrahedronInvariant;
|
||||
import ma2tetr.model.Coords3D;
|
||||
import ma2tetr.model.IterationState;
|
||||
import ma2tetr.model.Tetrahedron;
|
||||
import ma2tetr.model.Vector3D;
|
||||
|
||||
|
@ -11,6 +15,7 @@ public class TetrahedronScalingCalculator implements ITetrahedronCoordCalculator
|
|||
|
||||
private double radius = 1.0;
|
||||
private Tetrahedron tetrahedron = null;
|
||||
private List<IterationState> log = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void setRadius(double radius) {
|
||||
|
@ -21,6 +26,7 @@ public class TetrahedronScalingCalculator implements ITetrahedronCoordCalculator
|
|||
public void calculate() {
|
||||
Coords3D center = new Vector3D(0, 0, 0);
|
||||
tetrahedron = new Tetrahedron(0, radius, 0);
|
||||
StateLogger logger = new StateLogger(center, tetrahedron.getPointsSet(), log);
|
||||
TetrahedronInvariant tinv = new TetrahedronInvariant(tetrahedron);
|
||||
RadiusInvariant rinv = new RadiusInvariant(tetrahedron.getPointsSet(), center, radius);
|
||||
double scaling = radius / 10;
|
||||
|
@ -34,6 +40,7 @@ public class TetrahedronScalingCalculator implements ITetrahedronCoordCalculator
|
|||
tetrahedron.scale(-scaling);
|
||||
scaling = scaling / 10;
|
||||
}
|
||||
logger.logState();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -47,4 +54,9 @@ public class TetrahedronScalingCalculator implements ITetrahedronCoordCalculator
|
|||
return this.radius;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<IterationState> getStateLog() {
|
||||
return log;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
17
src/main/java/ma2tetr/model/IterationState.java
Normal file
17
src/main/java/ma2tetr/model/IterationState.java
Normal file
|
@ -0,0 +1,17 @@
|
|||
package ma2tetr.model;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public class IterationState {
|
||||
|
||||
Set<Coords3D> points;
|
||||
|
||||
public IterationState(Set<Coords3D> points) {
|
||||
this.points = points;
|
||||
}
|
||||
|
||||
public Set<Coords3D> getPoints() {
|
||||
return points;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue