CIS 3020 Project 3
Background
In this assignment you will perform calculations with points in a 2-dimensional plane, which are defined by their x- and y-coordinates. The notation for a point will be P(x,y). The operations that you will be writing include the comparison of 2 points, the calculation of distance between 2 points, the angle defined by the straight line through 2 points, and the slope of the line that passes through two points. Finally, you will also evaluate whether 3 points are aligned on the same line.
TwoDimensionalPoint.java
import java.lang.*; public class TwoDimensionalPoint { private int x; private int y; public TwoDimensionalPoint(int x, int y) { this.x = x; this.y = y; } public TwoDimensionalPoint() { this.x = 0; this.y = 0; } public int getX() { return x; } public int getY() { return y; } public void setLocation(int x, int y) { this.x = x; this.y = y; } public boolean equals(TwoDimensionalPoint rn) { boolean result = false; if((this.getX() == rn.getX()) && (this.getY() == rn.getY())) { result = true; } return result; } public void error(String msg) { System.out.println(msg); } public double perform(String operation, TwoDimensionalPoint rn) { double result = 0; if (operation.toLowerCase() == "slope") { result = this.slope(rn); } else if (operation.toLowerCase() == "distance") { result = this.distance(rn); } else if (operation.toLowerCase() == "angle") { result = this.angle(rn); } else { error("You must choose one of these three operations: slop, distance, angle"); } return result; } public double xDistance(TwoDimensionalPoint p) { double distance = Math.abs(this.getX() - p.getX()); return distance; } public double yDistance(TwoDimensionalPoint p) { double distance = Math.abs(this.getY() - p.getY()); return distance; } public double distance(TwoDimensionalPoint p) { // double distance = Math.sqrt(((this.getY() - p.getY())^2) + // ((this.getX() - p.getX())^2)); double X = this.xDistance(p); double Y = this.yDistance(p); double distance = Math.sqrt(((X * X) + (Y * Y))); return distance; } public double slope(TwoDimensionalPoint p) { /* System.out.println(this.getX()); * System.out.println(this.getY()); * System.out.println(p.getX()); * System.out.println(p.getY()); * */ double slope = Math.abs(this.yDistance(p)/this.xDistance(p)); //slope = Math.abs(((p.getY() - this.getY()) / (p.getX() - this.getX()))); return slope; } public boolean areAligned(TwoDimensionalPoint p1, TwoDimensionalPoint p2) { boolean result = false; if((this.slope(p1)==p2.slope(this)) && (this.slope(p1)==p2.slope(p1))) { result = true; } return result; } public double angle(TwoDimensionalPoint p) { double angle = Math.atan((this.yDistance(p)) / (this.xDistance(p))); angle = ((180 * angle) / Math.PI); return angle; } public String toString() { String point = new String(); point = "(" + this.getX() + ", " + this.getY() + ")"; return point; } }
PointDemo.java
public class PointDemo { public static void main (String[] args) { TwoDimensionalPoint P0 = new TwoDimensionalPoint(); System.out.println("TwoDimensionalPoint 1, P0, has been defined to be at: " + P0.toString()); TwoDimensionalPoint P1 = new TwoDimensionalPoint(1, 1); System.out.println("TwoDimensionalPoint 2, P1, has been defined to be at: " + P1.toString()); TwoDimensionalPoint P2 = new TwoDimensionalPoint(6, 4); System.out.println("TwoDimensionalPoint 3, P2, has been defined to be at: " + P2.toString()); TwoDimensionalPoint P3 = new TwoDimensionalPoint(4, 4); System.out.println("TwoDimensionalPoint 4, P3, has been defined to be at: " + P3.toString()); //Start distance calculations. System.out.println("\nThe distance from " + P0.toString() + " to " + P1.toString() + " is " + P0.perform("distance", P1)); System.out.println("The distance from " + P0.toString() + " to " + P2.toString() + " is " + P0.perform("distance", P2)); System.out.println("The distance from " + P0.toString() + " to " + P3.toString() + " is " + P0.perform("distance", P3)); System.out.println("The distance from " + P1.toString() + " to " + P2.toString() + " is " + P1.perform("distance", P2)); System.out.println("The distance from " + P1.toString() + " to " + P3.toString() + " is " + P1.perform("distance", P3)); System.out.println("The distance from " + P2.toString() + " to " + P3.toString() + " is " + P2.perform("distance", P3) + "\n"); // Stop distance calculations. // Start slope calculations. System.out.println("The slope of the line through " + P0.toString() + " to " + P1.toString() + " is " + P0.perform("slope", P1)); System.out.println("The slope of the line through " + P0.toString() + " to " + P2.toString() + " is " + P2.perform("slope", P0)); System.out.println("The slope of the line through " + P0.toString() + " to " + P3.toString() + " is " + P3.perform("slope", P0)); System.out.println("The slope of the line through " + P1.toString() + " to " + P2.toString() + " is " + P2.perform("slope", P1)); System.out.println("The slope of the line through " + P1.toString() + " to " + P3.toString() + " is " + P1.perform("slope", P3)); System.out.println("The slope of the line through " + P2.toString() + " to " + P3.toString() + " is " + P2.perform("slope", P3) + "\n"); // Stop slope calculations. // Start angle calculations. System.out.println("The angle of the line through " + P0.toString() + " to " + P1.toString() + " is " + P0.perform("angle", P1)); System.out.println("The angle of the line through " + P0.toString() + " to " + P2.toString() + " is " + P2.perform("angle", P0)); System.out.println("The angle of the line through " + P0.toString() + " to " + P3.toString() + " is " + P0.perform("angle", P3)); System.out.println("The angle of the line through " + P1.toString() + " to " + P2.toString() + " is " + P2.perform("angle", P1)); System.out.println("The angle of the line through " + P1.toString() + " to " + P3.toString() + " is " + P1.perform("angle", P3)); System.out.println("The angle of the line through " + P2.toString() + " to " + P3.toString() + " is " + P2.perform("angle", P3)); // Stop angle calculations. // Start aligned testing if (P0.areAligned(P1, P2)) { System.out.println("The points " + P0.toString() + ", " + P1.toString() + ", and " + P2.toString() + " are aligned"); } if (P0.areAligned(P1, P3)) { System.out.println("The points " + P0.toString() + ", " + P1.toString() + ", and " + P3.toString() + " are aligned"); } if (P0.areAligned(P2, P3)) { System.out.println("The points " + P0.toString() + ", " + P2.toString() + ", and " + P3.toString() + " are aligned"); } } }