2014-10-19 7 views
0

루프를 사용하여 중공 피라미드를 만들려고합니다. 이 방법에 접근하고 싶습니다. 특정 Y에서 시작하여 1 씩 줄이면서 X와 Z를 둘레로 덮어서 하나씩 확장하는 것입니다.루프를 사용하여 Java에서 피라미드 만들기

* 
    * * 
    * * 
*  * 
*  * 

허용되는 것은 XYZ를 사용하는 3D입니다.

내 주된 질문은 3 점이 있다면 X=50 Y=50 Z=50입니다. 센터에서 포인트를 얻는 동안 어떻게하면 Y 수준까지 내려갈 수 있습니까?

지금까지

for (int y = 1; y<15; y++) { 
    l.setY(l.getY() - 1); 
    l.setX(l.getX() + 1); 
    l.setZ(l.getZ() + 1); 
    l.getBlock().setType(Material.GLASS); 
} 

은 당신이 아래로 하나의 측면의 계단을 이동 시작 위치

답변

0

에서 내려 15 개 블록을가는 종류의 계단을 생성합니다. 다른면에서 x와 z는 다른 방향으로 커집니다.

3

3 축의 그래프를 상상해보십시오. 연습하지 않으면이 그래프를 살펴보십시오.

x y z axis

우리는 무슨 일이 일어나고 있는지 명확한 그림을 위해 축을 회전시켜, 높이로 Z를 사용합니다. 깊이 매개 변수로 z를 사용할 수도 있지만 진행 상황을 이해하는 것이 더 어려울 것입니다. 올바른 방법으로 공간을 향해 이동하지 않으므로 잘못된 플롯을 얻게됩니다.

찾고있는 것은 말하자면 S = (x, y, z) = (5,5 , 5) 당신은 piramid에 대한 가장자리를 인쇄하여 각 레벨을 내려 가고 싶습니다. 만약 4 점을 그리려 Z를 감분 아래로 이동하여 다음도 enter image description here

에 도시 시작점 (전 단지이 경우에 에지를 그려, 좀 더 그리려있다) 도시된다. 그래서 다음주기에 z = z-1; 따라서 그래프에서 허용하는 4 방향으로 이동해야합니다. 다른 각각

(5,4,4) 동안 enter image description here

중간 점은, (5,6,4)을 피라미드의 중심을 유지 ->가 y 축을 따라 이동

(4,5,4) (6,5,4) -> x 축을 따라 이동

이동하는 동안 사이클을 계속하는 동안 메트릭을 중심, 레벨 (높이) 축이 피라미드를 그리는 동안 ..

어떻게 되나요? 마지막 사진을 보시고, 무슨 일이 일어나고 있는지 추적하는데 도움이 될 몇 가지 색상을 추가했습니다. 또한 축과 주요 점 좌표를 추가했습니다. enter image description here 빨간색 점은 S1 = (5,5,4) 및 S2 = (5,5)로 이동하여 S = (5,5,5) (위쪽)에서 시작하여 피라미드의 중심을 유지합니다. , 3) .. 이것이 당신의 while 회 돌이의 두 개의 시클릿이라고 상상해보십시오. 녹색 점은 첫 번째 사이클을 추적합니다. z = 4 인 경우 피라미드의 중심이 이번에 S1입니다. y 축과 x 축을 이동하여 공간을 확장하려고합니다.

중심에서 당신은 -1로 이동하고 + 1은 y로 이동하므로 (5,4,4)와 (5,6,4)를 얻습니다. 지금까지 2 개의 모서리를 얻었습니다. 중심을 그대로 유지 한 채 x 축을 움직여 봅시다. 이번에는 (1, 2, 3, 4, 4,5,4)가되도록 같은 방향으로 1 단위 이동하십시오. 같은 일이 발생합니다. 두 번째 사이클. 이동할 거리는 기타 등등 업 사이클의 나머지가 (이전 문) 5 - 3 = 2 유닛에 의한 중심 내지가 = 3 (Z)의 경우

starting height - actual level height 

함으로써 얻어진다 당신이 끝내는 지점까지. 멋지고 잘 그려진 피라미드를 얻음으로써 중앙에서 시프트 0 단위로 멈추고 싶을 수 있습니다 (높이 == 실제 높이). 멈추는 다른 방법을 찾아야합니다. 뺄셈은 실제로 음의 높이에서도 작동합니다. z = -1에 도달하면 이전에 6 단위 이동이 있음을 알 수 있습니다.이 경우에는주기를 중지하고 중단 할 다른 방법을 찾아야합니다.

이것은 실제로 그리는 것이 아닌 4 점을 그리기 위해주기를 조정해야한다고 말했습니다.)

관련 문제