summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wu <lekensteyn@gmail.com>2013-11-27 16:41:28 +0100
committerPeter Wu <lekensteyn@gmail.com>2013-11-27 17:06:16 +0100
commit0f1a2cc09fc02e26e48fd82cad2fad4ea0cd32df (patch)
tree0d73a11f945a4601c55ab9bb64d794b291e16582
parent7e101b0c9bf4d519b6bf9dcdc6b0ca3e09124b93 (diff)
download2iv60-robots-0f1a2cc09fc02e26e48fd82cad2fad4ea0cd32df.tar.gz
Exercise 1.2 Viewing (part 2)
This has odd behavior, modifying some perspective. NOTE: vDist is modified using scrolling, vWidth is changed using right-click + scroll.
-rw-r--r--src/RobotRace.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/RobotRace.java b/src/RobotRace.java
index 42850d1..608438f 100644
--- a/src/RobotRace.java
+++ b/src/RobotRace.java
@@ -150,8 +150,16 @@ public class RobotRace extends Base {
gl.glLoadIdentity();
// Set the perspective.
- // Modify this to meet the requirements in the assignment.
- glu.gluPerspective(40, (float)gs.w / (float)gs.h, 0.1, 100);
+ // angle = 2 arctan(vWidth / 2vDist)
+ float angle;
+
+ angle = 2f * (float) atan((0.5f * gs.vWidth) / gs.vDist);
+ // radians to degree (degree = rad / pi * 180)
+ angle = 180 * angle / (float) PI;
+ // lower than 1 would yield no picture, great values cause an "infinite" line segment
+ angle = max(1, min(179, angle));
+ glu.gluPerspective(angle, (float)gs.w / (float)gs.h,
+ 0.1 * gs.vDist, 10.0 * gs.vDist);
// Set camera.
gl.glMatrixMode(GL_MODELVIEW);