2013-06-20 4 views
0

그래서 선택한 셀에서 방사형으로 애니메이션을 그리는 알고리즘을 찾으려고합니다. 예를 들어지점에서 반지름 방향으로 레이어의 격자 애니메이션

,의 내가 다음 그리드와 "O"와 셀로부터 시작하는 하나를 선택 있다고 가정 해 봅시다 :

x | x | x | x | x | 
x | x | x | x | x | 
x | x | x | o | x | 
x | x | x | x | x | 
x | x | x | x | x | 

을이이 길을 가고 계속해야합니다

x | x | x | x | x | 
x | x | x | o | x | 
x | x | o | o | o | 
x | x | x | o | x | 
x | x | x | x | x | 

x | x | x | o | x | 
x | x | o | o | o | 
x | o | o | o | o | 
x | x | o | o | o | 
x | x | x | o | x | 

x | x | o | o | o | 
x | o | o | o | o | 
o | o | o | o | o | 
x | o | o | o | o | 
x | x | o | o | o | 

그래서 기본적으로 루프 필요 I 그럴 때마다, I (즉, X, Y)

답변

1

추시 직교 좌표로 전환 될 필요가있는 새로운 셀 좌표가 필요 파이썬과 비슷한 의사 코드를 사용하면 일부 셀을 여러 번 전환 할 수 있지만이를 수행 할 수 있습니다. 따라서 switch을에서 o까지만 입력하고 이미 o 인 셀에는 영향을 미치지 않습니다.

for i in 0 .. size: # iteration 
    for j in 0 .. i: # both end points are inclusive 
    switch(x - i + j, y + j) 
    switch(x - i + j, y - j) 
    switch(x + i - j, y + j) 
    switch(x + i - j, y - j) 
+0

http://ideone.com/Y30vCG에서 데모 실행 – MvG

1

당신은 단순히 그리드 (이 코드 부분을 최적화 할 수 있습니다)를 통해 실행하고 인접한 o 년대가있는 경우 yx을 변경할 수 있습니다. 그런 다음 다시 실행하고 yo 님의 것으로 변경하십시오.

다른 솔루션 o 초기 위치 (X0, Y0)를 저장하고 i 번째 반복에서 모든 xabs(x - x0) + abs(y - y0) = io 경우에 변화 할 것이다.