Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

public class Turtle { private double x, y; private double angle; public Turtle(d

ID: 3545962 • Letter: P

Question

public class Turtle {

    private double x, y;     

    private double angle;    

    public Turtle(double x0, double y0, double a0) {

        x = x0;

        y = y0;

        angle = a0;

    }

    public void turnLeft(double delta) {

        angle += delta;

    }

    public void goForward(double step) {

        double oldx = x;

        double oldy = y;

        x += step * Math.cos(Math.toRadians(angle));

        y += step * Math.sin(Math.toRadians(angle));

        StdDraw.line(oldx, oldy, x, y);

    }

public static void main(String[] args)

{

int N = Integer.parseInt(args[0]);

double angle = 360.0/N

double step = Math.sin(Math.toRadians(angle/2));

Turtle turtle = new turtle(.5, .0, angle/2);

for (int i = 0; i < N; i++)

{

turtle.goforward(step);

turtle.turnleft(angle);

}

}

}

Modify the test client in the above program to produce stars with N points for odd N

Explanation / Answer

import java.awt.Color;


public class Turtle {

private double x, y; // turtle is at (x, y)

private double angle; // facing this many degrees counterclockwise from the x-axis


// start at (x0, y0), facing a0 degrees counterclockwise from the x-axis

public Turtle(double x0, double y0, double a0) {

x = x0;

y = y0;

angle = a0;

}


// rotate orientation delta degrees counterclockwise

public void turnLeft(double delta) {

angle += delta;

}


// move forward the given amount, with the pen down

public void goForward(double step) {

double oldx = x;

double oldy = y;

x += step * Math.cos(Math.toRadians(angle));

y += step * Math.sin(Math.toRadians(angle));

StdDraw.line(oldx, oldy, x, y);

}


// pause t milliseconds

public void pause(int t) {

StdDraw.show(t);

}



public void setPenColor(Color color) {

StdDraw.setPenColor(color);

}


public void setPenRadius(double radius) {

StdDraw.setPenRadius(radius);

}


public void setCanvasSize(int width, int height) {

StdDraw.setCanvasSize(width, height);

}


public void setXscale(double min, double max) {

StdDraw.setXscale(min, max);

}


public void setYscale(double min, double max) {

StdDraw.setYscale(min, max);

}



// sample client for testing

public static void main(String[] args) {

double x0 = 0.5;

double y0 = 0.0;

double a0 = 60.0;

double step = Math.sqrt(3)/2;

Turtle turtle = new Turtle(x0, y0, a0);

turtle.goForward(step);

turtle.turnLeft(120.0);

turtle.goForward(step);

turtle.turnLeft(120.0);

turtle.goForward(step);

turtle.turnLeft(120.0);

}


}