2010-06-17 3 views
0

2D 공간에서 배치 할 사각형 요소가 여러 개 있습니다. 각 요소에 대한 이상적인 위치를 계산합니다. 이제 제 문제는 이상적인 위치가 한 지역에 집중되어있는 것처럼 많은 요소가 중복된다는 것입니다. 가능한 한 겹치는 것을 피하고 싶습니다 (완벽 할 필요는 없습니다). 어떻게해야합니까?겹침없는 위치 요소

물리 시뮬레이션이 적합하다고 들었습니다. 맞습니까? 그리고 누구나 예제/튜토리얼을 제공 할 수 있습니까?

다만,이 작업을 정확히 수행하는 .NET 라이브러리를 알고 있다면 XNA를 사용하고 있습니다. Link

+0

내가 명확히하려고 노력하겠습니다. 당신은 이미 이상적인 위치 알고리즘을 가지고 있습니다; 겹치는 부분이 없도록 "이상적인 위치"에서 멀리 떨어진 곳으로 물건을 이동시키는 해결책을 찾고 싶습니까? –

+0

맞습니다. 내가 만들고자하는 것은 시각화입니다. 이상적인 위치는 요소의 기본 레코드의 여러 속성에 의해 결정됩니다. – eWolf

답변

1

Box2D의이 필요한 작업을 달성 할 수있는 Widly는 사용 (무료) 물리 라이브러리입니다. XNA는 자체 lerp 기능을 가지고 있습니다. 물리 엔진을 사용할 수 있습니다

0

당신이 찾고있는 알고리즘은 linear interpolation입니다 :

+0

그 기능은 실제로 프로젝트의 다른 부분에서 나에게 매우 유용합니다. 그러나 내가 언급 한 문제를 해결하기 위해 그것을 정확히 사용할 수있는 방법을 설명 할 수 있습니까? – eWolf

+0

@eWolf, 알고리즘을 사용하여 지정된 픽셀 너비 위에 막대 그래프를 올바르게 배포했습니다. 알고리즘을 사용하면 객체의 크기와 공간을 적절하게 조정하여 객체가 겹치지 않고 전체 공간을 차지할 수 있습니다. –

1

한 가지 방법 :

넣어 각 사각형에 긍정적 인 전하 (또는 반발력의 일종)와 힘과 움직임을 시뮬레이션 할 수 있습니다. 또한 Eyal이 친절하게 지적 했으므로 이탈하지 못하게하는 매력적인 힘이 필요합니다. 이것은 스프링으로 모델링 할 수 있습니다 (다시 Eyal이 지적한 바와 같이). 그들은 일 것입니다.은 겹치지 않는 직사각형을 포함 할 수있는 일종의 평형 상태로 끝납니다.

그래프 (노드와 가장자리 하나)의보기 좋은 모양을 결정하는 데 비슷한 아이디어 (힘 기반 추론)가 사용됩니다.

면책 조항 : 본인은 본인을 사용하지 않았습니다.

희망 하시겠습니까?

+0

@ 모론 : 반발력 만 사용하면 평형 상태가되지 않을 것이라고 생각합니다. 예를 들어, 그래프 그리기를위한 힘 기반 알고리즘은 노드들 사이의 반발력과 인력 (동일한 부호의 첫 번째 시뮬레이션 전하 및 두 번째 시뮬레이션 스프링)을 사용합니다. –

+0

@Eyal : 감사합니다. 답을 수정하겠습니다. 그리고 제길! 직사각형을 포함하지 않는 한, 반발력은 단지 그들을 표류시키는 원인이됩니다 :-). –

+0

답변 해 주셔서 감사합니다. 난 그냥 Box2D 라이브러리 @ tur1ng 게시 할 수있는 방법을 이해해야합니다. – eWolf