Pythonの良いジオメトリライブラリですか?[閉まっている]


97

次のように、Pythonでの幾何学的操作と評価のための優れた、よく開発されたライブラリを探しています。

  • 2Dと3D(存在する場合)の2つの線の間の交差を評価する
  • 平面と線の間の交点、または2つの平面の間の交線を評価する
  • 線と点の間の最小距離を評価する
  • 点を通過する平面の直交を見つける
  • 一連の点を回転、移動、鏡像化する
  • 4点で定義される二面角を見つける

私はこれらすべての操作についての大まかな本を持っていて、それを実装することはできましたが、残念ながら時間がないので、それを行うライブラリーを楽しんでいます。ほとんどの操作はゲームの目的に役立ちます。したがって、これらの機能の一部はゲームライブラリにあると思いますが、不要な機能(グラフィックスなど)は含めない方がよいでしょう。

助言がありますか ?ありがとう


あなただけの2Dと罰金している場合、あなたはチェックアウトすることができ、これを
ピティコス2015年

回答:


35

おそらくSymPyを見てください。


2
それは実際には私の要件を満たしていませんが、確かにクールなプロジェクトです。そのため、あなたの回答を将来への興味深い提案として受け入れます(SymPyにはジオメトリモジュールと大量の開発者がいるため)
Stefano Borini

1
悲しいことに2D。実際には建設的なジオメトリエンジンではありません。
meawoppl 2013年

3
SymPyのジオメトリモジュールも非常に遅くなる可能性があります。シンボリック数学を行うように設計されているため、近似浮動小数点値よりも正確な式を使用することを好みます。幾何学的計算に通常含まれる平方根の量を考えると、これらの式が非常に大きく、非常に遅くなることを想像できます。
dusktreader 2015年

3
SymPyのアップデートには、3Dライブラリも含まれるようになりました
control_fd

この回答をありがとう。私は今SymPyを試しています。最初の実験は、実行が非常に遅いようです-単純な2Dオブジェクトの場合でも。ジオメトリをリアルタイムで処理するのに適しているとしたら、何か考えはありますか?ありがとう。
ビル

27

Shapelyは、人気のあるGEOSライブラリを囲む素晴らしいPythonラッパーです。


6
純粋な「数学的幾何学」(いわば)ではなく、GISデータの処理に非常に重点を置いているようです
Stefano Borini

2
これは確かにGISコミュニティで使用するために作成されたものですが、故意に地理的な投影を無視しているため、汎用のユークリッドジオメトリライブラリとして使用するのに適しています。私は初期のコンピューターゲームプロジェクトでそれを頻繁に使用しており、問題なく動作します。
ジョナサンハートレイ

15
3Dジオメトリについて:「インスタンスを構築するときに3番目のz座標値を使用できますが、ジオメトリ分析には影響しません。すべての操作はxy平面で実行されます。」
sebpiq

3
上記のコメントを見て、コーディングに約30分かかりました。かなりかなり興奮しています。
meawoppl 2013年

2
質問で具体的に3Dを要求するのに、なぜ1つだけ反対票を投じるのですか?
ジェイミーブル

14

私はユークリッドが非常にシンプルで汎用的なユークリッド数学パッケージであることを発見しました。ライブラリには、あなたが述べた問題が正確に含まれていない場合がありますが、そのインフラストラクチャは、自分で問題を簡単に作成できるほど十分に優れています。


10

CGALにPythonバインディングもあります。


3
最後のリリースは2009年であり、それらは不完全なようです。誰かが最近それらを使用したこと、そしてバインディングで質問で尋ねられたことを実行できると誰もが言うことができますか?
BenjaminGolder

はい、私が見つけたすべてのバインディングは不完全です。たとえば、建設的なソリッドジオメトリなどの本当の利点もいくつかあります。また、CGALの高度にテンプレート化された性質により、うまくラップすることが難しくなります。私自身のプロジェクト(Demakein)では、cffiモジュールといくつかのひどいハックを使用して、インラインC ++スニペットを使用し、Pythonから直接CGALを使用しています。
ポールハリソン

6

geometry-simpleには、numpyのみを使用して、クラスポイントラインプレーンムーブメントが300行以内にあります。見てください。


6

私は本当にこの質問への良い答えを求めています、そして上記のものは私を不満にしました。しかし、私はpythonoccに出くわしました。優れたドキュメントがなく、インストールにまだ問題があります(まだpypi互換ではありません)。最終更新は4日前(2011年6月19日)でした。これは、大量のジオメトリとモデリング機能を備えたOpenCascadeをラップします。pythonoccウェブサイトから:

pythonOCCは、Pythonプログラミング言語用の3D CAD / CAE / PLM開発フレームワークです。高度なトポロジーおよび幾何学的操作、データ交換(STEP、IGES、STLインポート/エクスポート)、2Dおよび3Dメッシュ、剛体シミュレーション、パラメトリックモデリングなどの機能を提供します。

[編集:私は今pythonoccをダウンロードして、いくつかの例に取り組み始めました]

上記のすべてのタスクを実行できると思いますが、直感的に使用できないことがわかりました。SWIGラッパーからほぼ完全に作成されるため、コマンドの内省が難しくなります。


私の意見では、それはあまりにも多くを成し遂げます。私はレイトレーサーですぐに多くのジオメトリ操作を必要とするでしょう、そしてそれのために別個のgithubを作成することはおそらく意味があります。私はすでにいくつかのコードを持っています。ゼロから始めるわけではありませんが、十分でないとわかった場合、簡単に再設計できます。
Stefano Borini、2011年

@ステファノボリーニ:確かに!できる限りお手伝いさせていただきますが、あなたの資格レベルにはほど遠いです。
BenjaminGolder

利用できるものに私も同様に失望しています。単純なものについては、私は自分のコード(たとえばAdolphusで)を作成しましたが、たとえば今夜は、多面体-多面体の交差が必要であり、正気でなければならないことからのステップが多すぎます。これは前進している場合いずれにせよ、私を数える。
ezod

このプロジェクトは誕生しましたか?
Mermoz 2013年

1
@Mermozはい、しかし非常にゆっくり。ステファノはすでにライブラリの始まりであり、私は自分で追加を書いていますが、あまり進んでいません。github.com/stefanoborini/python-geometryおよびgithub.com/bengolder/python-geometryを
BenjaminGolder

2

OpenOptプロジェクト(http://openopt.org)の PythonモジュールSpaceFuncsに興味があるかもしれません

SpaceFuncsは、2D、3D、N次元の幾何モデリングのためのツールであり、パラメーター化された計算、数値最適化、幾何方程式の解法システムの可能性があります。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.