なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

Python で4点が同一平面上にあるかどうかを確かめたい

最近は Blender Add-on をいじっている私です。
Blender で、ある 4 点が同一平面上にあるかどうかを知りたくなったので、スクリプトを書きました。

例えば、下のように点 A ~ D があったとして、これがほぼ同一平面上にあるかどうかを知りたい場合は、

import numpy as np

point_a = np.array([...])
point_b = np.array([...])
point_c = np.array([...])
point_d = np.array([...])

以下のようにしてあげることで求められる。

import math

ab = point_b - point_a
ac = point_c - point_a
ad = point_d - point_a

matrix = np.array([
    [ab[0], ac[0], ad[0]],
    [ab[1], ac[1], ad[1]],
    [ab[2], ac[2], ad[2]],
])

r = np.linalg.det(matrix)

if math.isclose(r, 0, abs_tol=1e-5):
    print("ほぼ同一平面上にあるよ")

単純に行列を用いて、4 面体の体積を求め、体積が 0 であるかどうかを確認しているだけ。 (実際の体積は r の 1/6 だけど、今回は気にしない)

ではでは