背景:
我正在编写一个程序来处理与各种规则形状的顶点网络相关的大量数据。我有一个工作生成器,它根据一系列用户输入参数生成与所述形状的顶点相对应的笛卡尔坐标列表。然后将数据传递给过滤器,过滤器清除重复条目、对数据进行排序和各种其他功能,从那里将清理后的数据馈送到画布模块,该模块循环并绘制顶点。
问题:
我需要实现一个新的过滤器,它可以有效地循环遍历坐标,将每一对与其他每一对进行比较,即(x1,y1)
->(x2,y2)
到(x1,y1)
-> (xn,yn)
,(x2,y2)
->(x3,y3)
到(x2,y2)
->(xn,yn)
等所有条目,例如,如果和之间的(x1,y1)
关系(x5,y5)
适合[(x5-x1)^2+(y5-y1)^2]=vertex_spacing^2
,然后将两组坐标与它们各自的列表条目编号配对,并附加到一个新列表中,其中一个条目的形式为:[(x1,y1), (x5,y5), 0, 4]
例如。实现这一目标的最有效方法是什么?
我的尝试:
我已经在此处和各种指南中查看了很多处理列表的方法。我尝试过嵌套的“for”和“if”循环,但发现虽然这种方法可以工作,但它会导致运行时间过长,并试图将问题分解为许多较小的 for 循环。
进一步说明:
这样做的最终目的是将生成的坐标用于前端界面元素,并根据需要进行保存和导入。列表位置 0 和 4 in 的[(x1,y1), (x5,y5), 0, 4]
作用是使界面能够对坐标进行分组,以供以后在画布对象中使用。该方法应该能够处理潜在的数千个坐标。
提前感谢您的帮助,我当然愿意改进我提供的措辞/信息和/或添加示例代码,如果不清楚我的要求是什么 - 我对此还是很陌生!:)