大家好,我在看马士兵老师的视频时,对一道题不是很明白,原题是这样的:
定义一个点(point)类,用来表示三维空间的点(有三个坐标)。要求如下:
1.可以生成具有特定坐标的点对象
2.提供可以设置三个坐标的方法
3.提供可以计算该“点”距原点距离平方的方法下面是提供的原代码,虽然有原代码,我还是不太明白。可能是数学底子太差了吧,我就一点一点分析题意,“用来表示三维空间的点”,那么什么是三维空间呢?三维空间的点用图形又该怎样表示呢?算这个点距原点之间的距离的平方,为什么又要用(x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z - p.z)*(z - p.z)呢?
大家可能觉得太简单,可我确实不会,请说得详细一点,通俗一点,好让人能够看懂,愿大家教我!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;
}
double getDistance(Point p) {
return (x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z - p.z)*(z - p.z);
}
}public class TestPoint {
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(5.0);
System.out.println(p.getDistance(new Point(1.0, 1.0, 1.0)));
}
}
定义一个点(point)类,用来表示三维空间的点(有三个坐标)。要求如下:
1.可以生成具有特定坐标的点对象
2.提供可以设置三个坐标的方法
3.提供可以计算该“点”距原点距离平方的方法下面是提供的原代码,虽然有原代码,我还是不太明白。可能是数学底子太差了吧,我就一点一点分析题意,“用来表示三维空间的点”,那么什么是三维空间呢?三维空间的点用图形又该怎样表示呢?算这个点距原点之间的距离的平方,为什么又要用(x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z - p.z)*(z - p.z)呢?
大家可能觉得太简单,可我确实不会,请说得详细一点,通俗一点,好让人能够看懂,愿大家教我!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;
}
double getDistance(Point p) {
return (x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z - p.z)*(z - p.z);
}
}public class TestPoint {
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(5.0);
System.out.println(p.getDistance(new Point(1.0, 1.0, 1.0)));
}
}
这输出的不是p到原点的距离,而是p到p1点的距离
三维空间有长宽高构成,三维空间的长、宽、高三条轴是说明在三维空间中的物体相对原点O的距离关系(x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z - p.z)*(z - p.z)
三维空间两点的角力公式是double d=sqrt((x - p.x)*(x - p.x) + (y - p.y)*(y - p.y) + (z - p.z)*(z - p.z))你程序中的那个错了,没开开平方