2012-08-02 47 views
0

所以我有位置类和一个无线电类(无线电类包含坐标)。基本上,对于我正在编写的程序,我需要从无线电类获取坐标的位置,并使用两组坐标的距离公式。 地点:程序涉及使用距离函数

public class Location { 


private double lat, lon; 


public Location (double lat, double lon){ 
this.lat=lat; 
this.lon=lon; 
} 

public Location(){ 
this.lat=0.0; 
this.lon=0.0; 
} 

public void setLat(double lat){ 
this.lat=lat; 
} 

public void setLon(double lon){ 
this.lon=lon; 
} 

public double Distance (double lat1, double lon1, double lat2, double lon2) { 

lat1 = Math.toRadians(lat1); 
lon1 = Math.toRadians(lon1); 
lat2 = Math.toRadians(lat2); 
lon2 = Math.toRadians(lon2); 

double cosLat2 = Math.cos(lat2); 
double sinLonChange = Math.sin(lon2-lon1); 
double cosLat1 = Math.cos(lat1); 
double sinLat2 = Math.sin(lat2); 
double sinLat1 = Math.sin(lat1); 
double cosLonChange = Math.cos(lon2-lon1); 

double a = Math.pow((cosLat2*sinLonChange), 2); 
double b = Math.pow(((cosLat1*sinLat2)-(sinLat1*cosLat2*cosLonChange)), 2); 
double c = (sinLat1*sinLat2)+(cosLat1*cosLat2*cosLonChange); 

double spherDistance = Math.atan(Math.sqrt(a+b)/c); 

double Distance = 3959 * spherDistance; 

return Distance; 

} 


public double getLat(){ 
return lat; 
} 

public double getLon(){ 
return lon; 
} 
public double getDistance(){ 
return Distance; 
} 

public String toString(){ 
String dist="lat"+lat+"lon"+lon; 
return dist; 
} 

} 

和收音机:

public class Radio { 
public static void main(String[] args) { 
Location loc1=new Location(10,20); 
Location loc2=new Location(30,40); 

System.out.println(loc1.toString());  
System.out.println(loc2.toString());  

} 


} 

我还要提到的是,唯一的原因主要方法是在无线电是因为我只是为了测试,看看是否一切works.Any帮助或建议,将不胜感激。 非常感谢你们!

+6

你确切的问题是什么? – 2012-08-02 22:07:50

回答

0

如果我能正确读出你的想法,Radio应该有一个Location,并且你想要找到两个无线电之间的距离。然后

public class Radio { 
    public Location loc; 
} 

,如果你想找到两个无线电设备之间的距离,您可以创建使用Distance功能,但在(Radio r1, Radio r2)作为参数传递:在这种情况下,每个无线电应包含它自己的实例Location,像这样而不是四个双打。将public double Distance更改为static public double Distance,以便您可以自行调用它,而无需创建位置实例。然后在你的距离函数里面,你可以检索每个收音机的位置值,做你的计算,并返回一个结果。

1

上wardd的建议外推以上,我建议做这样的事情:

Location类:

public class Location { 
    // private data 

    // constructor 

    public double distance(Location otherLoc) { 
    // Use distance formula here 
    } 
} 

广播类:

public class Radio { 
    private Location loc; 

    public double distance(Radio otherRadio) { 
    return loc.distance(otherRadio.loc); 
    } 
} 

如果不能回答你所有的问题,请修改上面的帖子或发布一个新的更多的细节,以便我们可以提供帮助。