2009-11-05 1 views
0

. . 안녕, 모두들.직사각형이 아닌 캔바스 안에 사각형 및 임의 크기의 객체를 배치하기위한 알고리즘

. . 저는 캔버스를 여러 점 (x, y)으로 정의했습니다. 사각형이 아니지만, 적어도 거의 육각형 모양을 will 것입니다 (왜곡 된 육각형처럼, 각도는 항상 <이고 180도). 나는 또한 다양한 사각형 (큰 너비와 높이를 가진 140 개 정도의 큰 사각형)을 가지고 있으며 그 안에 모양을 배치해야합니다. 그들은 마치 중력에 의해 밀려나는 것처럼 배치되어야합니다 (즉, 모양의 꼭대기는 채워질 필요가 없지만 바닥의 필요성). . . 지금 당장 나의 유일한 아이디어는 모든 "y"위치 (limits [300] = [30,30]; limits [299] = [29, 32];와 같은 것)에 대한 최소 및 최대 "x"위치를 저장하는 것입니다. .), 직사각형을 반복하면서 영역을 얻은 다음 값을 비교하여 최상의 위치를 ​​찾습니다. 지금 당장 발행되는 것 중 가장 큰 것은 테이블과 같은 "유기적 인"방식으로 조직되어야한다는 것입니다 (행과 열을 가질 수없고 셀 안에 위치시킬 수 없습니다.) 가능한 한 좋은 위치에 배치해야합니다. 마치 유동적으로, 나란히, 하나는 다른 것 ...). 나는 어떻게 포지셔닝을 관리 할 지 모르겠다. . . "자동 균형 조정 된"개체 (좋은 예는 '볼 풀'Chrome 실험 : http://mrdoob.com/projects/chromeexperiments/ball_pool/)의 좋은 예를 알고 있지만 사각형 캔버스와 원형 개체를 사용하여 제한을 훨씬 쉽게 비교할 수 있습니다. . . 지금 당장 가장 좋은 아이디어는 가능한 모든 x/y 조합에 대해 개체를 확인하는 것입니다 (왼쪽에서 오른쪽으로 영역이 겹치는 지 확인). 이렇게하면 전체 컴퓨터가 잠깐 동안 계산 될 수 있습니다. 화면에 더 많은 itens, 더 많은 계산이 필요합니다).

. . 이 프로젝트는 Flash에서 실행되지만 예제, 팁, 알고리즘, 종이 또는 가상 코드가 큰 도움이 될 것입니다.

답변

0

저는 물리 시뮬레이션을 사용하여 모든 작업을 완료 할 수 있다고 생각합니다. 그것은 복잡하게 들릴지도 모르지만, 소리가 나는 것처럼 어렵지는 않습니다. actionscript 3을위한 몇 가지 물리 API가 있습니다. 저는 as3 port of Box2D을 사용했으며 그 결과에 꽤 만족합니다.

그것에 대해 갈 것이라고하는 방법은 다음과 같습니다

  • 가 벽에 모양 (당신의 다각형을 만드는 라인)
  • 는 박스 (사각형)을 정의
  • 와 물리 몸을 만들 수를 정의 적절한 표시 객체 정보 (링크 ID 등)
  • 물리 세계에 추가하고 시뮬레이션합니다.

실습 스크립트 3의 사용 경험이 무엇인지 모르지만 World Construction Kit을 살펴보십시오. 그것은 당신이 빨리 궤도에 올라갈 수 있도록해야합니다.

관련 문제