summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Camera.java29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/Camera.java b/src/Camera.java
index 57c6d70..694633d 100644
--- a/src/Camera.java
+++ b/src/Camera.java
@@ -146,7 +146,21 @@ class Camera {
* on the first person mode.
*/
private void setFirstPersonMode() {
- // code goes here ...
+ /**
+ * First person mode: look from the slowest robot forward.
+ */
+ Robot focus = getSlowestRobot();
+
+ // trivial: looks from the robot POV.
+ eye = track.getPointForLane(focus.getTimePos(), focus.getLane());
+
+ // The question is similar to question 2b of the intermediate test
+ // http://www.win.tue.nl/~vanwijk/2IV60/2IV60_test_exam_161213_answers.pdf
+ // C(t) = E(t) + P'(t) (P'(t) is the tangent vector).
+ center = center.add(track.getTangent(focus.getTimePos()));
+
+ // trivial: look forward, so up vector points up.
+ up = Vector.Z;
}
/**
@@ -163,4 +177,17 @@ class Camera {
}
return selected;
}
+
+ /**
+ * Returns the robots which has the lowest Global State Time position.
+ */
+ private Robot getSlowestRobot() {
+ Robot slowest = robots[0];
+ for (Robot robot : robots) {
+ if (robot.getTimePos() < slowest.getTimePos()) {
+ slowest = robot;
+ }
+ }
+ return slowest;
+ }
}