2

폴리곤 분해가 가능한 라이브러리를 찾고 있습니다.특수 방향으로 폴리곤 분해

an irregular polygon with internal subdivision lines, some vertical some not

을 그래서 작은 다각형을 얻을 : 여기 바와 같이, 다각형 조각해야하는 방향 또는 라인을 정의 정의합니다. 누구든지 이것을 지원하는 도서관을 알고 있습니까?

또는 어떤 아이디어입니까?

+0

그림에서 알 수없는 것은 결과 파티션에 선을 추가하는 기준은 무엇입니까? 모서리가 있지만 다각형의면을 통과하는 선도 있습니다) –

+0

선은 모서리의 방향을 가지고 모든 모서리 점에서 시작해야합니다. 그러나 내 목표는 임의의 방향을 정의하고이 방향으로 분해하는 것입니다. – Hunk

+0

그래서, 그것은 단지 일련의 라인일까요? 제 말은 입력은 분해 될 polugon과 몇 줄의 선 (폴리곤의 모서리와 평행하게 만들어야 함)입니다. 그 결과로 당신은 무엇을 기대합니까? 새로운 다각형의 집합? –

답변

1

사용하는 언어가 확실하지 않습니다. 내 목적을 위해 작성된 라이브러리가 있는데, 주어진 라인 집합과 전체 폴리곤을 반환하여 전체 파티션을 얻을 수 있습니다.

  1. 선 LineSet_2D 또는 Polygon_2D Line_2D
  2. 을 통해 또한
  3. 정의 파티션 라인의 집합하여 다각형을 정의합니다 : 당신이 방법처럼 질문을 해결할 수, PHP에 기록하고 그것을 사용하여, dimension라고하고

    //define or polygon. Note that Polygon_2D can also be used 
    $rPolygon = new LineSet_2D(
        new Line_2D(0, 3, 1, 1), 
        new Line_2D(1, 1, 3, 0), 
        new Line_2D(3, 0, 1,-1), 
        new Line_2D(1,-1, 0,-3), 
        new Line_2D(0,-3,-1,-1), 
        new Line_2D(-1,-1,-3,0), 
        new Line_2D(-3, 0,-1, 1), 
        new Line_2D(-1, 1, 0, 3) 
    ); 
    //define partition line set 
    $rPartition = new LineSet_2D(
        new Line_2D(-1, 1, 1,-1), 
        new Line_2D(-1,-1, 1, 1) 
    ); 
    //result line set: 
    $rResultSet = LineSet_2D::createFromArray(array_merge(
        $rPolygon->getLines(), 
        $rPartition->getLines() 
    )); 
    //for example, dump plain result: 
    var_dump($rResultSet->getPolygons()); 
    
    : 모든 다각형을 찾을 수
  4. 사용 LineSet_2D 방법 getPolygons는

나는 예를 작성했습니다

이 예제를 찾을 수도 있습니다 here하지만 내 LineSet_2D 클래스는 모든 루프 된 다각형을 반환하므로 (귀하의 질문에 대한 정확한 해결책이 아니라고 생각합니다. 뿐만 아니라 '조각').

+0

안녕하세요, 저는 C++을 사용하고 있습니다. 루핑 된 다각형의 의미는 무엇입니까? 내 솔루션은 예를 들어 A, B, C 등 모든 다각형이어야합니다.내 그림 – Hunk

+0

글쎄, 나는 C++에 PHP를 적용하는 것이 그리 어렵지 않다고 생각한다. (C++은 문법과 OOP 능력에 훨씬 더 다가 갔다.) 루핑 된 다각형을 언급함으로써 LineSet_2D를 통해 파티션을 만들면 원래의 조각뿐만 아니라 모든 폴리곤을 얻을 수 있습니다. 예 : 2 개의 대각선이있는 사각형을 상상해보십시오. 그것은 4 조각으로 나뉘어져 있지만, "작은"삼각형 조각뿐만 아니라 "큰"(사각형의 절반) 삼각형과 심지어 삼각형이 아니기 때문에 (더 작은 삼각형 조각이없는 전체 사각형) 훨씬 더 많은 실제 다각형을 가지고 있습니다.). –

+0

대단히 고마워요 – Hunk

0

"폴리곤 절단"부울 연산을 찾고 있습니다. 사용 가능한 리소스에 대해서는 google을 사용할 수 있습니다.

직접이 일에 일부 큐 .. 각 슬라이스 라인 ..

  1. 는 다각형의 가장자리와 슬라이스 라인의 교차점을 찾을 수 있습니다.
  2. 교차하는 각 모서리의 가장자리를 두 개로 나눕니다.
  3. 분할 된 가장자리에 해당하는 다각형을 두 개의 다각형으로 분할합니다.

모든 폴리곤에 대해 동일한 작업을 수행합니다. 꼭지점을 통과하는 선분을 나누는 것과 같은 특수한 경우를 처리해야합니다 ...

+0

diff 등의 작업을 의미합니까? 이 방법은 가능하지만 두 개의 다각형이 이렇게 많은 라이브러리가 있다고 생각하므로 다각형 및 줄 몇 가지가 있어야합니다? – Hunk

+0

이 작업을 수행하는 라이브러리가 확실하지 않습니다. 나는 다른 사람을 사용하지 않는다. 또한 교차 루틴을 제외하고는 데이터 구조 문제와 비슷합니다. 그래서, 만약 당신이 그 중 하나를 찾을 수 없다면, 나는 그럴 가능성이 가장 높습니다. 당신은 자신의 것을 쓸 수 있습니다. 그 힘든 일은 아니며 할 재미있을 수 있습니다. 또한 앞으로 버그를 직접 고칠 수 있습니다. –