[英]Return pairs of points from N 2D points where each two points define a line
我有一個2D點列表:(x1,y1),(x2,y2)…(xN,yN)-N 2D點。 每兩個點定義一條2D線。
返回所有唯一2D線的列表,您可以使用列表中的成對點進行構建。
我如何實現使用哈希表/映射-保持唯一的行(有無限的行)
我正在嘗試查找坡度並攔截然后相交的點。
斜率= y2 -y1 / x2-x1截距= y1-斜率* x1;
(嘗試在C ++中執行此操作)
您沒有指定語言,因此為了簡便起見,我將在此處使用python。 看起來像是對Python的玩笑:
import itertools
def slope(p1, p2):
return (p1[1]-p2[1]) / (p1[0]-p2[0])
def slp_intrcpt(p1, p2):
"""
return the tuple of slope and intercept
"""
slp = slope(p1, p2)
return slp, p1[1] - slp * p1[0]
def uniq_lines(points):
return set(slp_intrcpt(p1, p2) for p1, p2 in itertools.combinations(points, 2))
由於(slope, intercept)
對足以確定一條線,所以我想說完了您的要求。
如果您想跟蹤所有產生線的對,則可以
import collections
def uniq_lines(points):
d = collections.defaultdict(lambda: [])
for p1, p2 in itertools.combinations(points, 2):
d[slp_intrcpt(p1, p2)].append((p1, p2))
return d
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.