Graphmath.Vector2离矢量列表最近

时间:2018-01-24 23:13:44

标签: vector elixir

我实际上正在使用Graphmath.Vector2.near(a, b, r)来检测2个向量是否在范围内。 如果我有一个b列表并且我需要将5最接近的向量提取到a怎么办?

1 个答案:

答案 0 :(得分:1)

该模块不会导出任何距离计算功能,但重新创建它是微不足道的:

def distance({x, y}, {u, v}) do
  dx = x - u
  dy = y - v
  :math.sqrt(dx * dx + dy * dy)
end

现在,您可以按照距离点的距离对列表进行排序,并按照前面的5进行排序:

point = {1, 2}
list = [{3, 4}, {5, 6}, ...]
nearest =
  list
  |> Enum.sort_by(&distance(&1, point))
  |> Enum.take(5)