2012-01-31 2 views
2

회전하고 높일 수있는 3D 타일 그리드를 그리려합니다.깨진 Java 3D 그래픽

그리드는 때때로 회전 할 때 그래 픽을 표시하지 않고 그래픽을 절단합니다. 일반 그리드는 이와 같이 보이지 않아야합니다.

상단 절반이 없어야합니다.

enter image description here

사람이 설명하거나이 문제를 일으킬 수있는 것과 같은 예를들 도와 드릴까요? 다른 것을 찾았습니다. 화면의 한쪽에 스파이크가 나타나면 반대쪽에 타일이없는 것입니다. :

(new BasicStroke(6/5))는 어떻게해야 무슨

enter image description here

+0

@Legend 구체적으로 "훼손"이란 무엇입니까? 나는 당신의 코드를 컴파일하고 실행 시켰지만, 특별히 끔찍한 것을 보지 못했다. – CajunLuke

+0

@CajunLuke 100 X 100 그리드에서 매우 잘 보이는 절단은 거의 사용하기가 힘듭니다. 원본 위에 거의 평행 한 격자를 만듭니다. –

+0

Heh, 출력을 생성해야한다면 추가 작업이 필요합니다. :) 어쨌든, 업데이트는 _great_, upvoted입니다. :) – sarnold

답변

2

난 당신이 azimuth, elevation 324, 133-zmod -0.9로 설정하면, '7 × 7 대신 10 × 10 만 하나의 점을 격자를 0에서 xmod을두고 변경하는 것이 발견 오작동. 이와 오작동 포인트, 우리가 가진 :

= 48
  • i, j = 3
  • x0 = 7.0 y0 = 0.0, z0 = 6.1
  • x1 = -0.31273127, y1 = 5.4544506, z1 = -7.5074077,
  • near = 6.0 nearToObj = 1.5,
,691,363 바로 다음 두 줄 전에210

:

  x1 = x1 * near/(z1 + near + nearToObj); 
      y1 = y1 * near/(z1 + near + nearToObj); 

여기서 중요한 것은 z1 + near + nearToObj이 영하 넘은 것입니다. 위의 두 줄에 의해 계산 된 x1y1의 값의 부호가 0 이하로 변경되면 변경됩니다. 이 기호 변경으로 인해 눈금이 잘못 표시됩니다.

저는 3D 그래픽 전문가가 아닙니다.하지만이 결과는 카메라 뒤에 숨어 들어서 문제의 점을 그려 볼 수 없다고 생각합니다. 이 문제를 해결하는 가장 좋은 방법은 내가 가진 것보다 3D 그래픽에 대한 지식이 더 필요하다는 것입니다.


다른 답변은 완전히 잘못되어 삭제했습니다.나는 자바 2D 그래픽 API는 16 비트 정수를 사용하는 일을 포장했다 항에가는 경우에, 나는 적어도

g.drawLine(30, 30, 60, 60); 

g.drawLine(30, 30, 60 + 65536, 60 + 65536); 

이 동일한 출력을 생성하는지 확인하기 위해 시도 할 수 . 그들은하지 않습니다.

+0

정말 고마워요.하지만이 말을 잊어 버려서 미안하지만, 간단한 on 메소드로 if 각 타일의 x 및 y 포인트 위치 중 하나가 화면에 나타나지 않으면 인쇄되지 않습니다. 이 문제가 해결되었습니다. 엄청난 노력을 해주셔서 감사합니다. 감사합니다. <3 –

1

?

6/51으로 작성하는 멋진 방법입니다.

$ cat Int.java 
class Int { 
    public static void main(String args[]) { 
     System.out.println("6/5 == " + (6/5)); 
     return; 
    } 
} 
$ make Int.class 
javac Int.java 
$ java Int 
6/5 == 1 
$ 
+0

그건 내 작은 테스트 프로그램이 말한 것이 아니에요 ... 나는 대답을 편집 할 것입니다 ... – sarnold