【Python】Geometory 幾何計算どれがいいのかな? シミュレーションやCAD等を使う前に座標計算したい【ライブラリ】

スポンサーリンク
広告

空間モデル化する時ちょっと使いたい

Open系の電磁界解析やCFDもそうだけど、Mesh切るやつとかはかなり進んできていて、CADでモデル化できるのも多いんですが、CADで、寸法追うよりも、おじさんとしては、線状のモデルだと簡単なベクトルで交点求めたり。。平面で切った断面を調べてみたりとかしたくなります。昔はそういうのを各自でライブラリ作ってもってたんですが。。 今だと。。 ライブラリあるかな? と探してみました。

CADではFreeCADなら。。このあたりが参考になりそう。

Python scripting tutorial//プログラミング言語スクリプトチュートリアル - FreeCAD Documentation

で、FreeCADにはそういう便利なライブラリーはなさそうで。。Vector Mathで外積・内積とかで計算させるのかな?たぶんもっと探せばあるのかも?

FreeCAD vector math library - FreeCAD Documentation

Blenderなら、ずばりのAPIがありますね。

Geometry Utilities (mathutils.geometry) — Blender Python API

Blenderの方が豊富にあってわりと整然と揃えられていそうですね。FreeCADはそれぞれのWorkBenchで作られているので、相互のデータ構造なども少し違うんですね。。

でもこれらを使おうと思うと。。 CADのデータ構造を理解しないと行けなさそうなので、ちょっとおいておく(笑) いつかやらなきゃいけなさそうな時がくるかもだけど(笑)

もっとシンプルなやつないかな?と探してみました。

SympyのGeometry

Sympyという、昔で言うところのAlgebraとかの数式をそのまま扱うようなツールの中に、Geometoryを扱えるモジュールがあるみたいです。

Geometry — SymPy 1.10.1 documentation

入れようかな?って思ったけど。。Live.sympy.orgで動かせるみたいなのでちょっとみてみたけど。。

SymPy Live

3Dには対応してなさそうなので。。次に。。

Geometry3D

結局こういうシンプルなのが。。わかりやすいかな??

GitHub - GouMinghao/Geometry3D: Geometry3D: 3D Computational Geometrics Library
Geometry3D: 3D Computational Geometrics Library. Contribute to GouMinghao/Geometry3D development by creating an account on GitHub.

ドキュメントはこちら。。Intersection(交点もある)

Geometry3D: 3D Computational Geometrics Library — Geometry3D 0.2.4 documentation

インストールは、Anacondaからはできないので、Anacondaで環境を一つ作っておいて、コンソールから、

pip install Geometry3D

で。。AnacondaからJupyterLabを動かして

from Geometry3D import *
cph0 = Parallelepiped(origin(),x_unit_vector(),y_unit_vector(),z_unit_vector())
p = Plane(Point(0.5,0.5,0.5),Vector(1,1,1))
cpg = intersection(cph0,p)
r = Renderer()

r.add((cph0,'r',1),normal_length = 0)
r.add((cpg,'b',1),normal_length=0)

r.show()

立方体と、平面を切った交点(交線)を求めるとかが簡単にできて、Matplotlibで表示できますね。

ただ、ちょっといろいろなことすると。。重いですけど。。

これ使おうっと。。

created by Rinker
¥8,579 (2022/09/29 22:00:40時点 Amazon調べ-詳細)
created by Rinker
オライリー・ジャパン
¥3,300 (2022/09/29 22:39:51時点 Amazon調べ-詳細)

コメントを残していただけるとありがたいです

Loading Facebook Comments ...
%d人のブロガーが「いいね」をつけました。