定义一个point类,表示三维立体中的3个坐标,有如下两点疑问
定义一个point类,表示三维立体中的3个坐标,有如下两点疑问
如下代码:
public class Point{
double x,y,z;
//构造函数,用于传递值给成员变量
Point(double _x,double _y,double _z){
x=_x;
y=_y;
z=_z;
}
//设置提供坐标值得方法
void setX(double _x){
x=_x;
}
void sety(double _y){
y=_y;
}
void setz(double _z){
z=_z;
}
//计算距离的方法函数
double getDistance(Point p){
return (x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)+(z-p.z)*(z-p.z);/ /①?
}
public static void main(String[] args){
Point p=new Point(1.0,2.0,3.0);
Point p1=new Point(0.0,0.0,0.0);
System.out.println(p.getDistance(p1));//
p.setX(4.0);
p.sety(3.0);
System.out.println(p.getDistance(new Point(1.0,2.0,3.0)));
}
}
第一处是计算两点间距离平方和表达式,请问这是怎么实现的?
第二处是为什么p.getDistance(p1)表示p和p1的距离平方和
首先回答第二点,double getDistance(Point p) 这个方法的设计本身的意义就是 this点(本点)到目标点p的距离的平方,p1.getDistance(p)也是对的
第一点的话,简单,就是勾股定理.
看下图平面中:计算两点P和P1的距离l,
按照勾股定理 l平方=(x1-x)平方+(y-y1)平方.
在空间中是一样的,空间中两点的距离相当于立方体的对角线,先由x,y的平方和算出一个面对角线的平方和,而这个对角线和z以及立方体对角线又是一个三角形,所以就是x平方加y平方加z平方喽