我有一些Line对象形式的数据(例如Line1(开始,结束),其中start和end是点对象形式的坐标)。是否有快速浏览所有线条以查看它们是否形成三角形?快速,我的意思是比通过所有nC3可能性更好。
编辑:刚刚意识到我可能不理解所有的回复(我没有Adrian Lamo)。请尝试解释wrt Python。
答案 0 :(得分:0)
是否有快速浏览所有线条以查看是否有任何线条形成三角形?
是。假设您的积分是整数(或者可以很容易地转换为积分,因为它们具有固定的有效数字或类似数字):
在这里为你创造:
std::multimap<int>
),一个用于端点的x和y坐标,将坐标与指向相应行的指针相关联答案 1 :(得分:0)
1)几何步骤:输入字典中的所有线段,第一个端点作为键,第二个端点作为值。将存在重复的键,因此您将保留值列表而不是单个值。原则上,列表中不会有重复项(除非您两次输入相同的边)。
2)拓扑步骤:对于字典中的所有条目P
,考虑其列表中的所有元素对,让(Q, R)
。查找Q
并检查R
是否属于Q
列表。如果是,您已找到三角形(P, Q, R)
。
通过对称性,将报告每个三角形的所有六个排列。你可以通过在词典意义上强制执行P<Q<R
来避免这种情况。