summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wu <lekensteyn@gmail.com>2014-01-09 18:13:31 +0100
committerPeter Wu <lekensteyn@gmail.com>2014-01-09 18:13:31 +0100
commit093f04de5f03c0406861b6a715087868be8af19a (patch)
treedb54a9e2125bdd95c78b64ad5986dc32d2c1e7c8
parent3e879e2f6664b147a26bb0e302d3bb00c553262d (diff)
download2iv60-robots-093f04de5f03c0406861b6a715087868be8af19a.tar.gz
Camera: Implement auto mode
Quite arbitrary stuff here.
-rw-r--r--src/Camera.java22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/Camera.java b/src/Camera.java
index e52b4e5..a3e3a43 100644
--- a/src/Camera.java
+++ b/src/Camera.java
@@ -48,7 +48,7 @@ class Camera {
} else if (3 == mode) { // First person mode
setFirstPersonMode();
} else if (4 == mode) { // Auto mode
- // code goes here...
+ setAutoMode();
} else { // Default mode
setDefaultMode();
}
@@ -176,6 +176,26 @@ class Camera {
}
/**
+ * Alternates between the available camera modes.
+ */
+ private void setAutoMode() {
+ double slowest_pos = robots[0].getTimePos();
+ double fastest_pos = robots[0].getTimePos();
+ for (Robot robot : robots) {
+ slowest_pos = Math.min(slowest_pos, robot.getTimePos());
+ fastest_pos = Math.max(fastest_pos, robot.getTimePos());
+ }
+ double distance = Robot.racepost2meter(fastest_pos - slowest_pos);
+ System.err.println("dist+" + distance);
+ // the helicopter view is more suitable if robots are more distant
+ if (distance > 5) {
+ setHelicopterMode();
+ } else {
+ setMotorCycleMode();
+ }
+ }
+
+ /**
* Returns the robot on which the camera is focused.
*/
private Robot getFocusedRobot() {