package tracer.geometry;


final public class Ray3d {
  private Vector3d startPoint, direction;

  public Ray3d(Vector3d pnt, Vector3d dir) {
    startPoint = new Vector3d(pnt.getX(), pnt.getY(), pnt.getZ());
    direction = new Vector3d(dir.getX(), dir.getY(), dir.getZ());
    direction.normalize();
  }

  public Ray3d() {
    startPoint = new Vector3d();
    direction = new Vector3d();
  }

  public Vector3d point(double t) {
    return new Vector3d(startPoint.getX() + direction.getX() * t, startPoint.getY() + direction.getY() * t, startPoint.getZ() + direction.getZ() * t);
  }

  public String toString() {
    return "{" + startPoint.toString() + " -> " + direction.toString() + "}";
  }

  public Vector3d getStartPoint() {
    return startPoint;
  }

  public void setStartPoint(Vector3d p) {
    startPoint = p;
  }

  public Vector3d getDirection() {
    return direction;
  }

  public void setDirection(Vector3d d) {
    direction = d;
  }
}