Here is my assignment that I need help with:
1. Implement a class IrregularPolygo n that contains an array list of Point2D.Double objects.
2. The Point2D.Double class defines a point specified in double precision representing a location in (x, y) coordinate space. For example, Point2D.Double( 2.5, 3.1) constructs and initializes a point at coordinates (2.5, 3.1).
3. Use the following declarations as a starting point for your lab work.
As far as I can tell, I am ALMOST there, but there seems to be a technicality in my main method that prevents my program from working. Here is the tester file:
And here is the regular class file:
ANY help would be greatly appreciated! If you need any additional info, please let me know! Thanks in advance!
1. Implement a class IrregularPolygo n that contains an array list of Point2D.Double objects.
2. The Point2D.Double class defines a point specified in double precision representing a location in (x, y) coordinate space. For example, Point2D.Double( 2.5, 3.1) constructs and initializes a point at coordinates (2.5, 3.1).
3. Use the following declarations as a starting point for your lab work.
Code:
import java.awt.geom.*; // for Point2D.Double
import java.util.ArrayList; // for ArrayList
import gpdraw.*; // for DrawingTool
public class IrregularPolygon{
private ArrayList <Point2D.Double> myPolygon;
// constructors
public IrregularPolygon() { }
// public methods
public void add(Point2D.Double aPoint) { }
public void draw() { }
public double perimeter() { }
public double area() { }
}
Code:
import java.awt.geom.*;
import java.util.Scanner;
public class IrregularPolygonTester
{
public static String blah = new String("Y");//is this the proper way to do this?
public static void main(String[] args)
{
IrregularPolygon myShape = new IrregularPolygon();
Scanner in = new Scanner(System.in);
while(blah.equals("Y"))//test if user wants to keep adding points
{
System.out.print("Enter X-Coordinate: ");
double x = in.nextDouble();
System.out.print("Enter Y-Coordinate: ");
double y = in.nextDouble();
Point2D.Double myPoint = new Point2D.Double(x, y);
myShape.toAdd(myPoint);//this line is causing problems
System.out.print("Enter another point? (Y/N)");
blah = in.nextLine();
blah.toUpperCase();
blah.trim();
}
myShape.draw();
System.out.println("Perimeter of figure = " + myShape.perimeter());
System.out.println("Area of figure = " + myShape.area());
}
}
And here is the regular class file:
Code:
import java.awt.geom.*;
import java.util.ArrayList;
import gpdraw.*;
public class IrregularPolygon
{
private ArrayList <Point2D.Double> myPolygon;
private double x;
private double y;
private double perim;
private double total;
private DrawingTool myPen;
private SketchPad myPaper;
public IrregularPolygon()
{
ArrayList <Point2D.Double> myPolygon = new ArrayList <Point2D.Double>();
x = 1;
y = 1;
perim = 0.0;
total = 0.0;
myPaper = new SketchPad(500,500);
myPen = new DrawingTool(myPaper);
}
public void toAdd(Point2D.Double myPoint)
{
myPolygon.add(myPoint);
}
public void draw()
{
myPen.up();
myPen.move(myPolygon.get(0).getX(), myPolygon.get(0).getY());
myPen.down();
for(int i = 1; i < myPolygon.size(); i++)
{
myPen.move(myPolygon.get(i).getX(), myPolygon.get(i).getY());
}
}
public double perimeter()
{
for(int i = 0; i < myPolygon.size(); i++)
{
perim += ((Point2D.Double)myPolygon.get(i)).distance((Point2D.Double)myPolygon.get(i + 1));
}
return perim;
}
public double area()
{
for(int i = 0; i < myPolygon.size(); i++)
{
double X1 = (myPolygon.get(i).getX());
double Y1 = (myPolygon.get(i).getY());
double X2 = (myPolygon.get(i + 1).getX());
double Y2 = (myPolygon.get(i + 1).getY());
total += (X1 * Y2 - Y1 * X2);
}
return 0.5 * total;
}
}
ANY help would be greatly appreciated! If you need any additional info, please let me know! Thanks in advance!
Comment