找到位于两点之间一条线上的点,准确的段,python

Sha*_*ica 0 python line points

我有 2 个点,(x0,y0) (x1,y1),它们形成一条线 L。我找到了斜率 M。现在我想在 L 上的这两个点之间找到 3 个点,即它们之间的精确距离,意味着所有点之间的距离相同。如果我用“-”字符测量距离,它可能是这样的: p1---p2​​---p3---p4---p5 其中 p1 和 p5 是我的起点。

首先我想通过做这样的事情来找到斜率:

def findSlope(p1, p2):
if (p1[0] - p2[0] != 0):
    return (p1[1] - p2[1])/p1[0] - p2[0]
else:
    return 0
Run Code Online (Sandbox Code Playgroud)

这很容易,但获得实际分数对我来说并不容易。我想过做这样的事情:

def findThreePoints(p1,p2):

    slope = findSlope(p1,p2)
    c = p1[1] - slope*p1[0]
    x1 = (p1[0] + p2[0])/4
    x2 = (p1[0] + p2[0])/2
    x3 = (3*(p1[0] + p2[0]))/4
    y1 = slope*x1 + c
    y2 = slope*x2 + c
    y3 = slope*x3 + c
Run Code Online (Sandbox Code Playgroud)

虽然这种方法有效,但它的编码风格/效率不是很好,因为如果我希望函数给出超过 3 分,我将需要它更长的时间。

是否有任何内置的方法可以用 Numpy 来做到这一点,或者只是一种更有效的方法来解决这个问题,这不会让我的代码看起来像是仅为某个目的而编写的?

use*_*975 5

就这么简单:

import numpy as np

#create the points 
number_of_points=3
xs=np.linspace(x0,x1,number_of_points+2)
ys=np.linspace(y0,y1,number_of_points+2)

#print them
for i in range(len(xs)):
    print (xs[i],ys[i])
Run Code Online (Sandbox Code Playgroud)

它也适用于水平或垂直线