2016-12-14 1 views
2

나는 drawPolygon 메서드를 통해 삼각형을 그리는 JPanel을가집니다. 내 목표는 X 축을 중심으로 그래픽을 회전시키는 것입니다. 회전이라는 메서드가 있다는 것을 알고 있지만이 메서드는 Z 축 주위에서만 회전합니다.그래픽 (2D) 회전 : x 축 회전

X 축을 중심으로 JPanel의 그래픽을 어떻게 회전시킬 수 있습니까? 그래픽 2D 라이브러리 회전의이 종류를 할 수있는 기능이없는 경우

Example of rotation

, 내가 그렇지 않으면 내 목표를 보관할 수있는 방법을 말해주십시오. Java-fx 나 canvas와 같은 다른 GUI 유형으로 전환해도 상관 없습니다. (그러나 Java에 머문다)

+0

* "X 축을 중심으로 'JPanel'에서 그래픽을 회전하는 방법은 무엇입니까?"* X 축 위에 시작한 다음 X 축 아래에서 상하로 끝나는 것처럼 미러링 하시겠습니까? 그렇다면 적절한 크기 조정 'AffineTransform'이이를 수행해야합니다. –

+0

@AndrewThompson X 축에서 미러링하지 않으므로 크기 조정이 필요 없습니다. 여기에 내가 쓴 것의 [시각화] (https://youtu.be/IKB1hWWedMk?t=8m40s)가 있습니다. – NoSenseSenpai

+0

동영상 링크를 따르지 않습니다. 스크린 샷을 가져 오거나 의미하는 그림을 그립니다. –

답변

3

Java 2D는 AffineTransform을 제공하지만 affine transformation은 변환 후에 평행선이 평행을 유지하도록 보장합니다. 대안으로, 에 대해 PerspectiveCamera을 제공하는 JavaFX 3D을 고려하십시오. 이 완료 exampleRotate.Y_AXIS을 사용하지만 Rotate.X_AXIS은 원하는 효과를냅니다. 또한 Java 고급 이미징 Warp (here)을 예로 들며 WarpPerspectivePerspectiveTransform을 제공합니다.

+0

* "affine 변환은 변환 후에 평행선이 평행을 유지해야합니다."* 나는 항상 그 문제에 관한 문서의 말씨에 대해 궁금해했습니다. 불행한 점은, 세계의 '평평한'지도를 변환하기 위해 변형을 사용하고 싶었 기 때문입니다 ([이 답변] (http://stackoverflow.com/a/18825844/418556)에서 볼 수 있듯이). 글로브. 그러나 핵심 Java를 사용하여 달성 할 수 있다고 생각할 수있는 유일한 방법은 변형입니다. 그 행운을 빌어 요! –

+1

@AndrewThompson : 아마도 위에서 인용 한 'PerspectiveTransform'일지 모르지만 메르카토르가 역행 한 것은 확실하지 않습니다. 또한 나는 "_requires_"라는 단어를 좋아하지 않았다. – trashgod

+0

참고 ['javafx.scene.effect.PerspectiveTransform'] (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/effect/PerspectiveTransform.html) – trashgod