From f0558a20c1674459bbd46a965672983fc91a7278 Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Fri, 20 Dec 2013 12:44:28 +0100 Subject: Attempt to implement First Person viewing mode --- src/Camera.java | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) 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; + } } -- cgit v1.2.1