package org.geogebra.common.awt;
public abstract class GPoint2D {
public static class Double extends GPoint2D {
public double x;
public double y;
public Double(double x, double y) {
setLocation(x, y);
}
public Double() {
setLocation(0, 0);
}
@Override
public void setLocation(double x, double y) {
this.x = x;
this.y = y;
}
@Override
public double getX() {
return x;
}
@Override
public double getY() {
return y;
}
@Override
public void setX(double x) {
this.x = x;
}
@Override
public void setY(double y) {
this.y = y;
}
@Override
public double distance(GPoint2D q) {
return Math.sqrt(
GPoint2D.distanceSq(getX(), getY(), q.getX(), q.getY()));
}
@Override
public double distance(double x1, double y1) {
return Math.sqrt(GPoint2D.distanceSq(getX(), getY(), x1, y1));
}
}
public abstract double getX();
public abstract double distance(double x, double y);
public abstract double getY();
public abstract void setX(double x);
public abstract void setY(double y);
public abstract double distance(GPoint2D q);
public static double distanceSq(double x1, double y1, double x2,
double y2) {
double d_x = x2 - x1;
double d_y = y2 - y1;
return d_x * d_x + d_y * d_y;
}
public void setLocation(double x, double y) {
setX(x);
setY(y);
}
}