gpt4 book ai didi

algorithm - 如何在数学上表述这样的问题? (行继续搜索)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:45:27 25 4
gpt4 key购买 nike

我有一组“线”,每条线由 2 个点定义。我只处理位于这些点之间的线段。我需要搜索可以彼此连续(相对于某个角度)并位于同一条线上(有一些偏移)的线

我的意思是我有 3 行之类的东西

alt text

我解决了一些数学问题(其公式是我的问题)并了解到有些线可以称为相对一条线(具有某个角度 K 和偏移量 J)

alt text

当然,我所说的数学公式是指某种数学公式,例如

alt text

最佳答案

  1. 根据角度(在 0 到 Pi 的范围内)对所有线段进行排序,并构建角度到线段的排序图。
  2. 确定一些角度差阈值,低于该阈值的两条线段可被视为平行。遍历您的 map ,对于每个映射,考虑角度两侧的相邻映射(需要环绕),它们被认为是平行的。
  3. 在每组几乎平行的片段中,查看它们是否是彼此的“延续”。

如果 4 个点的所有可能配对大致平行,则两条线段 (A,B) 和 (C,D) 大致共线。您可以使用与上述相同的测试。

伪代码:

Angle(A,B)
return Atan((B.y-A.y) / (B.x-A.x)) // use atan2 if possible, but needs wrapping

NearlyParallel(angle1, angle2)
delta = Abs(angle1-angle2)
return (delta < threshold) or (delta > Pi-threshold)

Collinear(A,B, C,D)
// Assume NearlyParallel(Angle(A,B), Angle(C,D)) == true
return NearlyParallel(Angle(A,C), Angle(B,D)) and NearlyParallel(Angle(A,D), Angle(B,C))

关于algorithm - 如何在数学上表述这样的问题? (行继续搜索),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3769885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com