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 来做到这一点,或者只是一种更有效的方法来解决这个问题,这不会让我的代码看起来像是仅为某个目的而编写的?
就这么简单:
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)
它也适用于水平或垂直线
| 归档时间: |
|
| 查看次数: |
1095 次 |
| 最近记录: |