如题,java中如何计算一个位置在另一个位置的方向?不是很清楚,请大神解救
[code="c"]
java的没有用过,其他的可以的
//根据经纬度计算距离和方向
function getRadian($d)
{
return $d * M_PI / 180;
}
function getDistance ($lat1, $lng1, $lat2, $lng2)
{
$lat1 =getRadian($lat1);
$lat2 = getRadian($lat2);
$a = $lat1 – $lat2;
$b = getRadian($lng1) – getRadian($lng2);
$v = 2 * asin(sqrt(pow(sin($a/2),2) +
cos($lat1) * cos($lat2) * pow(sin($b/2),2)));
$v = round(EARTH_RADIUS * $v * 10000) / 10000;
return $v;
}
//根据经纬度计算方向
function getDirection($lat1, $lng1, $lat2, $lng2){
$k1 = $lng2-$lng1;
$k2 = $lat2-$lat1;
if( 0 == $k1){
if($k2>0){
$str=”聊友在您的正北方 “;
}
else if( $k2<0){
$str =”聊友在您的正南方 “;
}
else if( $k2 == 0){
$str=”聊友正在您的附近 “;
}
}else if( 0 == $k2){
if($k1>0){
$str=”聊友在您的正东方 “;
}
else if( $k1<0){
$str=”聊友在您的正西方 “;
}
}else{
$k=$k2/$k1;
if($k2>0){
if($k1>0){
$angle = 180*atan($k)/M_PI;
$str=”聊友在您的东偏北 $angle 度方向 ”;
}else if($k1<0){
$angle = 180*atan(-$k)/M_PI;
$str= “聊友在您的西偏北 $angle 度方向 ”;
}
}else if($k2<0){
if($k1<0){
$angle = 180*atan($k)/M_PI;
$str = “聊友在您的西偏南 $angle 度方向 ”;
}
else if($k1>0){
$angle = 180*atan($k)/M_PI;
$str=”聊友在您的东偏南 $angle 度方向 ”;
}
}
}
return $str;
}
[/code]
这个很简单 数学问题 x y坐标 x坐标计算东西方向 y坐标计算南北方向
说下你的xy在什么环境中。
如直线上、xy坐标上、立体坐标上。不一样
这个很简单,以前做一个简单的微博系统,就是计算方圆距。 定好坐标轴,x,y轴,然后你的位置就是x,y轴的交点,计算用公式即可。
设A(X1,Y1)、B(X2,Y2),
则 ,
(x1-x2)平方+(y1-y2)平方=开根,取得绝对值即可。