2012-09-13 2 views
3

변환 지수는 수학적으로

$c = 2; // number of columns 
$r = 3; // number of rows 

내가 x,y 그리드는 특정 셀 (왼쪽 -> 오른쪽, 위쪽 -> 아래 순서)의 인덱스입니다 $i의 값의 좌표를 찾을 필요가 있음을 감안할 때 좌표입니다.

보통 두 개의 루프를 사용하여이 작업을 수행합니다. 행에 대한 루프와 열에 대한 루프가 있지만, 제 경우에는 이 필요합니다.

그래서 위의 경우에, 나는 같은 것이다 :

$grid = new Grid(2, 3); 
             // i x y 
list($x, $y) = $grid->getCoordOfCell(0); // 0 0 0 
list($x, $y) = $grid->getCoordOfCell(1); // 1 1 0 
list($x, $y) = $grid->getCoordOfCell(2); // 2 0 1 
list($x, $y) = $grid->getCoordOfCell(3); // 3 1 1 
list($x, $y) = $grid->getCoordOfCell(4); // 4 0 2 
list($x, $y) = $grid->getCoordOfCell(5); // 5 1 2 

꼽은을 getCoordOfCell()는 그리드 셀 $i에 대한 x,y의 배열을 좌표를 반환합니다.

내가 여기에 뭔가를 놓친 지 모르겠지만, 이것이 꽤 많이 있다고 생각합니다.

결과 수학 공식은 div 초 또는 mod 초를 기반으로 할 것이라고 추측하지만, 나 자신을 생각할 정신적 인 힘이 없습니다. 게다가 나는 이것이 미래의 다른 사람들에게 유용 할 것임을 확신합니다.

$i % NUMBER_ITEMS_IN_ROW 

그리고 오른쪽 행 얻을 :에서

$i/NUMBER_ITEMS_IN_ROW 

를 내가 여기에 PHP를 이야기하고 있지만, 아,이

답변

10

당신은 오른쪽 열을 얻으려면 ... 아마도 언어 무신론자입니다 예를 들어 3 행 2 열 (== 항목이 한 행에 있음)이므로 다음과 같습니다.

$i $x ($i%2) $y ($i/2) 
0  0   0 
1  1   0 
2  0   1 
3  1   1 
4  0   2 
5  1   2