我有2个点,(x0,y0)(x1,y1)形成一条直线L.我找到了斜率M. 现在我想找到位于L上的这两个点之间的3个点,即它们之间的准确距离,意味着所有点之间的距离相同。 如果我用" - "来测量距离。 char,它可以是这样的: 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
这很简单,但获得实际分数对我来说并不容易。 我想做这样的事情:
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
虽然这种方法有效,但编码风格/效率并不是很好,因为如果我希望函数提供超过3个点,我需要更长的时间。
是否有任何内置方法可以使用Numpy执行此操作,或者只是采用更有效的方法解决此问题,这不会使我的代码看起来只是出于某种目的而编写的?
答案 0 :(得分:4)
尽可能简单:
biggestVar = 'E'
它也适用于水平或垂直线
答案 1 :(得分:1)
如果一行的等式是
y = m*x + q
为什么不使用FOR循环? 类似的东西:
import numpy
#define n in the code or by input
n = 100
#define the x and y arrays with numpy.array
x = numpy.zeros(n)
y = numpy.zeros(n)
#define the start, stop values in your code or by input
start = 1
stop = 10
#define the step, depending by n
step = (stop - start)/n #if you want n points
i = 0
for a in numpy.arange (start, stop, step):
x[i] = a
y[i] = m*a + q
i = i + 1 #there are better ways to do this
当然这对垂直线不起作用,但找到这些线的点没有问题(x是常数)