三个地理位置之间的角度

时间:2016-09-12 08:46:41

标签: java android geolocation angle

我需要计算三个地理位置之间的角度,其中两个地理位置始终相同,只有其中一个正在改变(例如当用户走路时)。

enter image description here

第一点是用户的起始位置。第二点是用户的当前位置,因此在开始时第一点等于第二点。第一点和固定点总是相同的。我对每一点都有经纬度。

我尝试使用这个公式:

double angle1 = Math.atan2(startingLocation.getLongitude() - destinationLocation.getLongitude(), startingLocation.getLatitude() - destinationLocation.getLatitude());
double angle2 = Math.atan2(currentLocation.getLongitude() - destinationLocation.getLongitude(), currentLocation.getLatitude() - destinationLocation.getLatitude());

return Math.toDegrees(angle1 - angle2);

但是例如当第一个点==第二个点i时,除了度数为0.但它给了我像176度这样的奇怪结果。问题在哪里?

2 个答案:

答案 0 :(得分:0)

使用此

router.get('/:id', (req, res) => {
   Bookshelf.transaction(trx => {
      return Article
      .query({
         where: {id: req.params.id}
      })
      .fetch({transacting: trx})
      .then(article => {
         // handle article == null here
         return article
         .save(
            {fetchCount: 1 + article.get('fetchCount')},
            {patch: true, transacting: trx})
      })
   })
   .then(article => {
      res.json(article)
   })
})

答案 1 :(得分:0)

两条线之间的角度可以通过以下函数计算

public static double angleBetween2Lines(Line2D line1, Line2D line2)
{
    double angle1 = Math.atan2(line1.getY1() - line1.getY2(),
                           line1.getX1() - line1.getX2());
    double angle2 = Math.atan2(line2.getY1() - line2.getY2(),
                           line2.getX1() - line2.getX2());
    return angle1-angle2;
}

来源:Calculating the angle between two lines without having to calculate the slope? (Java)

如果您的起点为(x1,y1),则结束点为(x2,y2),固定点为(x3,y3),那么您应该使用

double angle1 = Math.atan2(y3-y1,x3-x1);
double angle2 = Math.atan2(y3-y2,x3-x2);
double result = angle1-angle2;