空間モデル化する時ちょっと使いたい
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で表示できますね。
ただ、ちょっといろいろなことすると。。重いですけど。。
これ使おうっと。。
コメントを残していただけるとありがたいです