web-dev-qa-db-ja.com

別の行の点で固定長の垂直な線を描く

私は2つの点A(10,20)とB(15,30)を持っています。点は線ABを生成する。 Pythonで6(各方向3単位)の長さが6(各方向3単位)で垂直線、CDを描画する必要があります。

次のコードを使用して、AB 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の値は、stopelyライブラリを使用して別の目的を達成するために使用されます。

6
Sourav

slopeがABの傾きである場合、CDの勾配は-1/slopeです。これは水平方向の変化に対する垂直方向の変化に等しい:dy/dx = -1/slope。これはdx = -slope*dxを与えます。そしてPythagorean Theoremによって、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は1つの数だけを返しますが、一般に正の平方根があります。cは正の平方根に対応し、dは負に対応します)。

3
Acccumulation