みかづきメモ

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

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

ではでは

Roslyn Analyzer で良い感じにテストしたい

ここ数ヶ月くらい、ずっと VRChat 向けの Roslyn Analyzer を作って得られた知見を放出していく系私です。
今回は、ユニットテストのお話。

ちなみに宣伝しておくと、作った Analyzer はこれで、 Unity + VRChat Udon 向けに作られています。

もし興味がある人は見てみるとどこか役立つ部分があるかもしれません。

github.com

続きを読む