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

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

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

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

https://wiki.freecadweb.org/Python_scripting_tutorial/ja

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

https://wiki.freecadweb.org/FreeCAD_vector_math_library

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

https://docs.blender.org/api/current/mathutils.geometry.html

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

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

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

SympyのGeometry

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

https://docs.sympy.org/latest/modules/geometry/index.html

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

https://live.sympy.org/

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

Geometry3D

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

https://github.com/GouMinghao/Geometry3D

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

https://geometry3d.readthedocs.io/en/latest/

インストールは、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
¥10,380 (2024/05/18 17:58:29時点 Amazon調べ-詳細)
created by Rinker
オライリー・ジャパン
¥3,300 (2024/05/18 17:58:30時点 Amazon調べ-詳細)

投稿者 tom2rd

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

Loading Facebook Comments ...

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください