파이썬에서 좋은 기하학 라이브러리? [닫은]


97

파이썬에서 기하학적 조작 및 평가를 위해 훌륭하고 잘 개발 된 라이브러리를 찾고 있습니다.

  • 2D와 3D에서 두 선 사이의 교차점 평가 (있는 경우)
  • 평면과 선 사이의 교차점 또는 두 평면 사이의 교차점 평가
  • 선과 점 사이의 최소 거리 평가
  • 점을 통과하는 평면에 직교하는 것을 찾습니다
  • 점 세트 회전, 변환, 대칭
  • 네 점으로 정의 된 2 면각을 찾으십시오.

이 모든 작업에 대한 개요 책이 있고 구현할 수는 있지만 안타깝게도 시간이 없어서 그렇게하는 도서관을 좋아할 것입니다. 대부분의 작업은 게임 용도로 유용하므로 이러한 기능 중 일부는 게임 라이브러리에서 찾을 수 있지만 필요하지 않은 기능 (예 : 그래픽)은 포함하지 않는 것이 좋습니다.

어떤 제안? 감사


2D만으로 괜찮다면 이것을 확인할 수 있습니다 .
Pithikos

답변:


35

2
(SymPy가 기하 모듈 및 개발자의 거대한 양의가로) 나는 미래도 흥미로운 제안으로 답변을 받아 들일 수 있도록, 그것은 정말 내 요구 사항을 충족하지 않습니다, 그러나 그것은 참으로 멋진 프로젝트입니다
스테파노 Borini

1
슬프게도 2D. 실제로 건설적인 지오메트리 엔진이 아닙니다.
meawoppl 2013 년

3
SymPy의 기하학 모듈도 매우 느릴 수 있습니다. 기호 수학을 수행하도록 설계되었으므로 대략적인 부동 소수점 값보다 정확한 표현식을 사용하는 것을 선호합니다. 일반적으로 기하학적 계산에 포함되는 제곱근의 양을 고려할 때 이러한식이 얼마나 크고 매우 느려지는지 상상할 수 있습니다.
dusktreader 2015

3
으로 업데이트 SymPy가 아니라 이제 3D 라이브러리가 포함
control_fd

이 답변에 감사드립니다. 지금 SymPy를 시험하고 있습니다. 첫 번째 실험은 단순한 2D 개체의 경우에도 실행 속도가 상당히 느린 것 같습니다. 지오메트리를 실시간으로 처리하는 것이 좋은지 아십니까? 감사.
Bill

27

Shapely 는 인기있는 GEOS 라이브러리를 둘러싼 멋진 파이썬 래퍼 입니다.


6
순수한 "수학적 기하학"(말하자면)이 아닌 GIS 데이터 처리에 매우 집중하는 것 같습니다.
Stefano Borini

2
확실히 GIS 커뮤니티에서 사용하기 위해 만들어졌지만 의도적으로 지리적 투영을 무시하므로 범용 유클리드 기하학 라이브러리로 사용하기에 좋습니다. 나는 초기 컴퓨터 게임 프로젝트에서 그렇게 많이 사용하고 잘 작동합니다.
Jonathan Hartley

15
3D 지오메트리에 대한 설명 : "인스턴스를 구성 할 때 세 번째 z 좌표 값을 사용할 수 있지만 지오메트리 분석에는 영향을주지 않습니다. 모든 작업은 xy 평면에서 수행됩니다."
sebpiq

3
위의 댓글은 알아 내기 위해 코딩하는 데 30 분 정도 걸렸습니다. 정말 상당히 동요.
meawoppl 2013 년

2
질문이 특별히 3D를 요구할 때 왜 한 번만 반대표를 던지나요?
Jamie Bull

14

나는 pyeuclid 가 아주 간단한 범용 유클리드 수학 패키지 라는 것을 알았 습니다. 라이브러리에 여러분이 언급 한 문제가 정확히 포함되어 있지 않을 수 있지만 인프라는 스스로이를 쉽게 작성할 수있을만큼 충분합니다.


10

CGAL 에는 Python 바인딩 도 있습니다.


3
마지막 릴리스는 2009 년이며 불완전한 것으로 보입니다. 누구든지 최근에 사용한 적이 있고 바인딩을 사용하여 질문에서 묻는 일을 할 수 있다고 말할 수 있습니까?
BenjaminGolder

예, 구조적 솔리드 지오메트리와 같은 실제 장점을 포함하여 내가 찾은 모든 바인딩이 불완전합니다. 또한 CGAL의 고도로 템플릿 화 된 특성으로 인해 잘 포장하기가 어렵습니다. 내 프로젝트 ( Demakein )에서 cffi 모듈과 몇 가지 끔찍한 해킹을 사용하여 인라인 C ++ 스 니펫을 사용하여 Python에서 직접 CGAL을 사용하고 있습니다.
Paul Harrison

6

geometry-simple 에는 numpy 만 사용하여 ~ 300 줄의 Point Line Plane Movement 클래스가 있습니다. 구경하다.


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

@Stefano Borini : 물론입니다! 기꺼이 도와 드릴 수는 있지만 귀하의 자격 수준에 미치지 못합니다.
BenjaminGolder

나는 사용 가능한 것에 마찬가지로 실망합니다. 간단한 작업을 위해 (예 : Adolphus에서 ) 제 자신의 코드를 작성 했지만, 예를 들어 오늘 밤에는 다면체-다면체 교차가 필요하며 제정신이 되려면 너무 많은 단계를 거쳐야합니다. 어쨌든, 이것이 앞으로 진행된다면, 나를 세십시오.
ezod

이 프로젝트가 탄생 했습니까?
Mermoz 2013 년

1
@Mermoz 예,하지만 매우 느립니다. 스테파노는 이미 도서관을 시작했고 저는 제 자신의 추가 사항을 작성하고 있지만 우리는 그리 멀리 가지 않았습니다. 참조 github.com/stefanoborini/python-geometrygithub.com/bengolder/python-geometry
BenjaminGolder

2

OpenOpt 프로젝트 ( http://openopt.org)의 Python 모듈 SpaceFuncs에 관심이있을 수 있습니다.

SpaceFuncs는 2D, 3D, N 차원 기하학적 모델링을위한 도구로, 매개 변수화 된 계산, 수치 최적화 및 기하학적 방정식 풀이 시스템의 가능성이 있습니다.


2

Python Wild Magic 은 또 다른 SWIG 래핑 코드입니다. 그러나 이것은 게임 라이브러리이지만 SWIG 라이브러리 파일을 조작하여 Python API에서 원하지 않는 그래픽 항목을 제외 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.