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

我有两个要点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值。
在另一条线的一点上绘制固定长度的垂直线 - python

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**2
3**2 = (slope**2 + 1)*dy**2
dy**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 sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

Python-Excel导出 - python

我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…

Python:传递记录器是个好主意吗? - python

我的Web服务器的API日志如下:started started succeeded failed 那是同时收到的两个请求。很难说哪一个成功或失败。为了彼此分离请求,我为每个请求创建了一个随机数,并将其用作记录器的名称logger = logging.getLogger(random_number) 日志变成[111] started [222] start…

Python pytz时区函数返回的时区为9分钟 - python

由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…

用大写字母拆分字符串,但忽略AAA Python Regex - python

我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…