簡體   English   中英

從N個2D點返回成對的點,其中每兩個點定義一條線

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM