【问题标题】:coordinates min distance c++坐标最小距离c ++
【发布时间】:2016-07-02 20:43:09
【问题描述】:

我目前有一个小问题,因为我需要找到与我的最小距离相对应的坐标。 例如,我有一个人和三个潜在的站点。我需要找到它们之间的距离,然后取最小距离,接下来我必须取与该最小距离相关的坐标。 我只是为我的程序的那一部分向你发送我的循环。

for (newCoordinate = newPoints.begin(); newCoordinate != newPoints.end(); newCoordinate++)// here are my three potential stations
{
    distanceBetweenBusCoordinateAndNewPoint = sqrt(pow((busRequest->x - newCoordinate->x), 2) + (pow((busRequest->y - newCoordinate->y), 2)));// find min
    distances.push_back(distanceBetweenBusCoordinateAndNewPoint);//add to the vector
}
newdis = min_element(distances.begin(), distances.end());// find the min of min

感谢您的帮助!

【问题讨论】:

  • 错误是什么?
  • 你有什么问题?
  • 正如我所说,我需要与该最小距离相关的坐标。我有 3 个距离和 3 个坐标 (x,y) 。我找到了它们的最小值并需要保存坐标,因为在我获取这些坐标后我会找到另一个任务。
  • 不要使用pow 进行平方运算;将它们相乘。 pow 函数的执行开销比简单的乘法要多得多。

标签: c++ distance min coordinate


【解决方案1】:

我会将此视为在std::vector 中找到最小值。

一个变量包含最小距离;初始化为最大值。 两个Point 变量定义了与最小距离相关的直线。

这是一个算法:

Calculate distance.  
if distance < minimum distance  
    set Point1 and Point2 to the ordinates used in the distance calculation.  
    set minimum distance to the calculated distance.  

在循环结束时,变量Point1Point2 将是与minimum distance 关联的坐标。

【讨论】:

  • 是的,我明白你的意思,但我的错是我没有再添加一件事。例如,我找到了一些与最小距离相关的坐标。然后我一开始的第一个循环我没有发布它迭代一个新人,我需要为那个人做同样的程序。这是问题所在,我已经有最小值 = 先前的最小距离。因此,如果第二个人的距离大于平均值,则根本不会添加他。所以我需要解决方案。我为第一个人找到了一个车站的坐标,然后我需要为第二个人找到新的坐标,如果他可以到达
  • 第一个的站。希望很清楚我的程序应该做什么。我做对了一切,但问题就在这里。我的最小值可能会变得太低,然后那些人将没有任何站点,但我需要一直检查,如果那个人无法到达前一个或任何一个,那个人应该有一个新坐标的新站点,甚至如果经过一些迭代后距离大于最小值
  • 因为我已经按照您发布的内容完成了。但顺便感谢您的评论
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-21
  • 2020-09-14
  • 2021-01-29
相关资源
最近更新 更多