主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ
書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。
2021/07/15
最近は 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 だけど、今回は気にしない)
ではでは