diff options
author | Peter Wu <lekensteyn@gmail.com> | 2014-01-09 18:13:31 +0100 |
---|---|---|
committer | Peter Wu <lekensteyn@gmail.com> | 2014-01-09 18:13:31 +0100 |
commit | 093f04de5f03c0406861b6a715087868be8af19a (patch) | |
tree | db54a9e2125bdd95c78b64ad5986dc32d2c1e7c8 | |
parent | 3e879e2f6664b147a26bb0e302d3bb00c553262d (diff) | |
download | 2iv60-robots-093f04de5f03c0406861b6a715087868be8af19a.tar.gz |
Camera: Implement auto mode
Quite arbitrary stuff here.
-rw-r--r-- | src/Camera.java | 22 |
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() { |