2013-03-24 2 views
0

저는 스프라이트 아트로 작업 중이며 충돌 감지기에 대한 다각형 (정점 배열)을 생성해야합니다.이미지의 버텍스 가져 오기?

나는 픽셀의 색상을 얻는 데 사용할 수있는 getPixel(x, y) 방법이 있습니다. 나는 멋진 색감 탐지 나 그저 단색 픽셀과 투명한 픽셀을 필요로하지 않습니다. 여기 내 뇌가 녹기 시작 전에 시작 무엇 :

boolean[] hasColor = new boolean[size]; 

for (int i = 0; i < size; i++) { 
    int row; 
    row = i % width; 
    if ((pixmap.getPixel(i, row) != 0) || (pixmap.getPixel(row, i) != -256)) { 
     hasColor[i] = true; 
    } else { 
     hasColor[i] = false; 
    } 
} 

하는 픽셀이 비어있는 무엇을 추적하고, 무엇을하지 않은 것을. 하지만 여기서 내가 어디로 가야할지 모르겠다.

도움을 줄 수있는 알고리즘이나 유용한 것이 있습니까? 누군가 입력을 제공 할 수 있습니까?

+0

어쩌면 당신은 이와 같은 것을 찾고 있습니까? http://en.wikipedia.org/wiki/Gift_wrapping_algorithm – AlchemicalApples

답변

0

래스터 아트웍이 무엇입니까?

필요한 것은 벡터 외곽선입니다.

벡터에서 래스터로의 변환은 벡터에서 래스터로의 변환이 쉽습니다.

  1. 은 (하여 화소 색으로 존재하지/본 행렬 등) 흑백 화상으로 변환 작품 :

    여기서 하나의 가능한 흐름이다.

  2. Adobe Illustrator의 "라이브 추적"기능을 사용하여이 이미지를 벡터화합니다.
  3. 개요 다각형을 다시 읽을 수있는 형식으로 내 보냅니다.
  4. 충돌 감지를위한 입력으로 사용하십시오. 연산 된 윤곽의 장점으로 "적합"정의)

     ***** 
         *  * 
        *  * 
        *   * 
        *  * 
         *  * 
         ***** 
    

    B : 윤곽이 같은 육각형 같다고 가정

    A) : 여기서

다른 접근법 픽셀의 몇 퍼센트가 육각형 내부에 있는지 확인합니다 (위에 표시된 일반 모양의 그림 일 필요는 없습니다). C) 최적의 피팅을 찾을 때까지 (또는 피곤할 때까지) 정점의 위치를 ​​변경합니다.

물론 단계 (C)는 물론 가장 어려운 단계입니다. 스프라이트에 더 많은 꼭지점이 필요한 경우 팔각형/너비 대신 시작해야 할 수도 있습니다.

관련 문제