PR

【超簡単】Pythonで2点を通る直線の方程式(一次関数)を求める関数

Python Python
Python

2点を通る直線の方程式を求める関数を作ってみました。
直線の方程式オブジェクトには、
y軸に平行な場合yに値が格納され、
x軸に平行な場合xに値が格納され、
それ以外の場合はy=mx+nの形式でmとnの値が格納されたオブジェクトが返却されます。

※ax+by+c=0と使い分けるためにy=mx+nを使用しています。

# 2点を通る方程式を返却
# (y=数値) or (x=数値) or (y=mx+n)
def makeLinearEquation(x1, y1, x2, y2):
	line = {}
	if y1 == y2:
		# y軸に平行な直線
		line["y"] = y1
	elif x1 == x2:
		# x軸に平行な直線
		line["x"] = x1
	else:
		# y = mx + n
		line["m"] = (y1 - y2) / (x1 - x2)
		line["n"] = y1 - (line["m"] * x1)
	return line

実際に動かしてみます。

x軸に平行な場合(2, 4)と(2, 7)を通る直線

# -*- coding: utf-8
import json

# (2, 4)と(2, 7)を通る直線の場合(x軸に平行)
print("(2, 4)と(2, 7)通る直線の場合")
print(json.dumps(makeLinearEquation(2, 4, 2, 7), indent=4))
(2, 4)と(2, 7)を通る直線の場合
{
    "x": 2
}
2点を通る直線の方程式 x軸に平行

y軸に平行な場合(2, 4)と(3, 4)を通る直線

# -*- coding: utf-8
import json

# (2, 4)と(3, 4)を通る直線の場合(y軸に平行)
print("(2, 4)と(3, 4)通る直線の場合")
print(json.dumps(makeLinearEquation(2, 4, 3, 4), indent=4))
(2, 4)と(3, 4)を通る直線の場合
{
    "y": 4
}
2点を通る直線の方程式 y軸に平行

y軸にもx軸にも平行ではない場合(2, 4)と(3, 7)を通る直線

# -*- coding: utf-8
import json

# (2, 4)と(3, 7)を通る直線の場合(y=mx+n)
print("(2, 4)と(3, 7)通る直線の場合")
print(json.dumps(makeLinearEquation(2, 4, 3, 7), indent=4))
(2, 4)と(3, 7)を通る直線の場合
{
    "m": 3.0,
    "n": -2.0
}
2点を通る直線の方程式 y=mx+n
タイトルとURLをコピーしました