如何找到极坐标与角度和半径之间的距离。 我知道公式是:
d = sqrt(r1^2 + r2^2 -2r1r2cos(theta2 - theta1)
当坐标只是角度和半径
时,如何编写它?答案 0 :(得分:2)
请阅读课程 - 你需要一个PolarPoint类,它有一个方法distanceFrom - 测试:
class PolarPoint {
private double angle;
private double radius;
public PolarPoint(double angle, double radius) {
this.angle = angle;
this.radius = radius;
}
public double distanceFrom(PolarPoint other){
double theta1 = this.angle;
double theta2 = other.angle;
double r1 = this.radius;
double r2 = other.radius;
return Math.sqrt(r1*r1 + r2*r2 - 2*r1*r2*Math.cos(theta2 - theta1));
}
public static void main (String[] args) {
PolarPoint p1 = new PolarPoint(0, 0); // the origin
PolarPoint p2 = new PolarPoint(Math.PI, 1); // (-1, 0)
System.out.println(p1.distanceFrom(p2));
}
}
作为旁注 - 角度和半径应该是最终的,以使其不可变。但我想从评论(即rotate())中可以看出这是一个可变的点 - 牦牛!
答案 1 :(得分:1)
这应该可以解决问题:
class PolarPoint {
private double innerRadius;
private double innerAngle;
public PolarPoint(double radius,double angle) {
innerRadius = radius;
innerAngle = angle;
}
public double getRadius() {
return innerRadius;
}
public double getAngle() {
return innerAngle;
}
public double polarDistance(PolarPoint otherPoint) {
return Math.sqrt(innerRadius*innerRadius + otherPoint.getRadius()*otherPoint.getRadius() -2*innerRadius*otherPoint.getRadius()*Math.cos(innerAngle-otherPoint.getAngle()));
}
}
最后的polarDistance方法给出了PolarPoint对象与另一个PolarPoint之间的距离。请注意,角度θ必须以弧度为单位。
答案 2 :(得分:0)
public double PolarDistance(double r1,double theta1,double r2,double theta2) {
return Math.sqrt(r1*r1 + r2*r2 -2*r1*r2*Math.cos(theta2 - theta1));
}
这应该有效。 r1和theta1是第一个点的坐标,r2和θ2是第二个点的坐标。