最近は 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 だけど、今回は気にしない)
ではでは