diff options
-rw-r--r-- | src/Camera.java | 29 |
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; + } } |