Расстояние между двумя точками (x1, y1) и (x2, y2) на плоской поверхности:
____________________
/ 2 2
\/ (y2-y1) + (x2-x1)
Но, если все, что вам нужно, это середина двух ваших точек, вам следует изменить функцию средней точки на:
public Point midpoint (Point p1, Point p2) {
return new Point ((p1.getX() + p2.getX()) / 2, (p1.getY() + p2.getY()) / 2);
}
Это вернет совершенно новый точечный объект с точками, установленными в середине данных двух точек (без необходимости заниматься какой-либо другой математикой). И, поскольку ваш второй класс - это линия, вам нужны только две конечные точки, чтобы описать ее, поэтому я внесу некоторые незначительные изменения.
Первый Point.java
:
class Point {
double x, y;
Point (double xcoord, double ycoord) {
this.x = xcoord;
this.y = ycoord;
}
public double getX() { return x; }
public double getY() { return y; }
}
Тогда Line.java
:
public class Line {
Point p1, p2;
Line (Point point1, Point point2) {
this.p1 = point1;
this.p2 = point2;
}
public Point midpoint() {
return new Point ((p1.getX()+p2.getX())/2, (p1.getY()+p2.getY())/2);
}
public double abstand() {
return Math.sqrt(
(p1.getX() - p2.getX()) * (p1.getX() - p2.getX()) +
(p1.getY() - p2.getY()) * (p1.getY() - p2.getY())
);
}
static public void main (String args[]) {
Line s = new Line (new Point(2.0, 2.0), new Point(5.0, 6.0));
Point mp = s.midpoint();
System.out.println ("Midpoint = (" + mp.getX() + "," + mp.getY() + ")");
double as = s.abstand();
System.out.println ("Length = " + as);
}
}
Эти два файла, при компиляции и запуске с конечными точками 2,2
и 5,6
(гипотенуза классического прямоугольного треугольника 3/4/5), генерируют правильное:
Midpoint = (3.5,4.0)
Length = 5.0