gpt4 book ai didi

python - 在另一条线的一点上绘制固定长度的垂直线

转载 作者:行者123 更新时间:2023-12-03 20:25:37 26 4
gpt4 key购买 nike

我有两个要点A(10,20)和B(15,30)。这些点生成线AB。我需要在Python中的点B上绘制一条长度为6(每个方向为3个单位)的垂直线CD。

我已经具有使用以下代码的AB行的某些属性:

from scipy import stats
x = [10,15]
y = [20,30]
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)

如何计算C和D的位置。我需要它们的X和Y值。
enter image description here

C和D的值将用于使用Shapely库实现另一个目标。

最佳答案

如果slope是AB的斜率,则CD的斜率是-1/slope。这等于垂直变化超过水平变化:dy/dx = -1/slope。这给出了dx = -slope*dx。根据毕达哥拉斯定理,您具有3**2 = dy**2+dx**2。替换为dx,您会得到
3**2 = (-slope*dy)**2+dy**23**2 = (slope**2 + 1)*dy**2dy**2 = 3**2/(slope**2+1)dy = math.sqrt(3**2/(slope**2+1))
然后,您可以获取dx = -slope*dy。最后,您可以使用dxdy来获取C和D。因此,代码为:

import math
dy = math.sqrt(3**2/(slope**2+1))
dx = -slope*dy
C[0] = B[0] + dx
C[1] = B[1] + dy
D[0] = B[0] - dx
D[1] = B[1] - dy

(请注意,尽管 math.sqrt仅返回一个数字,但通常会有一个正负平方根。C对应正平方根,D对应负数)。

关于python - 在另一条线的一点上绘制固定长度的垂直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57065080/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com