return this;
}
+ /**
+ * Add coordinates of current point to other point. Value of current point will not be changed.
+ * @return current point.
+ */
+ public Point3D addTo(final Point3D ... otherPoints) {
+ for (final Point3D otherPoint : otherPoints) otherPoint.add(this);
+ return this;
+ }
+
+ /**
+ * Create new point by cloning position of current point.
+ *
+ * @return newly created clone.
+ */
public Point3D clone() {
return new Point3D(this);
}
private void computeCameraCoordinates(final Avatar avatar, final double zoom) {
+ // compute camera view coordinates as if camera is at (0,0,0) and look at (0,0,1)
final float viewAngle = (float) .6;
+ cameraCenter = new Point3D();
topLeft = new Point3D(0,0, SIZE).rotate(-viewAngle, -viewAngle);
topRight = new Point3D(0,0, SIZE).rotate(viewAngle, -viewAngle);
bottomLeft = new Point3D(0,0,SIZE).rotate(-viewAngle, viewAngle);
bottomLeft.rotate(-avatar.getAngleXZ(), -avatar.getAngleYZ());
bottomRight.rotate(-avatar.getAngleXZ(), -avatar.getAngleYZ());
- // compute camera coordinates as if camera is at avatar's location and look
- cameraCenter = new Point3D(avatar.getLocation()).scaleDown(zoom);
- topLeft.add(cameraCenter);
- topRight.add(cameraCenter);
- bottomLeft.add(cameraCenter);
- bottomRight.add(cameraCenter);
-
+ // place camera view at avatar location
+ avatar.getLocation().clone().scaleDown(zoom).addTo(cameraCenter, topLeft, topRight, bottomLeft, bottomRight);
}
}