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");
}
}
}