/* *****************************************************************************
 *  Name:    COS 126
 *  NetID:   cos126
 *  Precept: P0126
 *
 *  Description:  Reads pairs of values, the first an (x, y) coordinate pair and
 *  all following are pairs of (dx, dy). Draws line segments starting at (x, y)
 *  and incremented by (dx, dy). Tests for closed paths (i.e., paths that end
 *  the same place they start) and out of bounds segments (which it does not draw).
 **************************************************************************** */

public class DrawPath {
    public static void main(String[] args) {

        // starting point
        double x = StdIn.readDouble();
        double y = StdIn.readDouble();

        // save the origin for condition at the bottom
        double originX = x;
        double originY = y;

        // initialize counter here so we can increment for each iteration
        int segment = 0;

        while (!StdIn.isEmpty()) {
            double dx = StdIn.readDouble();
            double dy = StdIn.readDouble();

            // calculate new coordinates, but don't draw segment yet
            double newX = x + dx;
            double newY = y + dy;

            // only draw segment if within bounds (default is unit square)
            if (x < 0 || x > 1 || y < 0 || y > 1 ||
                    newX < 0 || newX > 1 || newY < 0 || newY > 1) {
                StdOut.println("Segment " + segment + " out of bounds");
            } else {
                StdDraw.line(x, y, x + dx, y + dy);
            }

            // update for next iteration
            x = newX;
            y = newY;
            segment++;
        }

        // check if path ends near beginning
        if (Math.abs(originX - x) > 0.0001 || Math.abs(originY - y) > 0.0001) {
            StdOut.println("Not closed");
        }
    }
}