【问题标题】:Graphics (2D) Rotation: Rotate x Axis图形 (2D) 旋转:旋转 x 轴
【发布时间】:2016-12-14 15:29:44
【问题描述】:

我有一个JPanel,通过drawPolygon 方法在其中绘制三角形。我的目标是围绕 X 轴旋转图形。我知道有一个方法叫rotate,但是这个方法只绕Z轴旋转。

如何围绕 X 轴旋转 JPanel 中的图形?

Example of rotation

如果图形 2D 库没有进行这种旋转的功能,请告诉我如何归档我的目标。我不介意切换到另一种 GUI 类型,如 Java-fx 或 canvas。 (但留在 Java 中)

【问题讨论】:

  • “如何在JPanel 中围绕 X 轴旋转图形?” 你的意思是像从 X 轴上方开始然后结束一样镜像它上下颠倒并低于X轴?如果是这样,适当的缩放AffineTransform 应该这样做。
  • @AndrewThompson 我不想在 X 轴上镜像它,所以没有缩放。这是我提到的visualisation
  • 未关注视频链接。获取屏幕截图或绘制您的意思。
  • @AndrewThompson 已编辑。

标签: java swing rotation java-2d


【解决方案1】:

Java 2D 提供AffineTransform,但affine transformation 确保平行线在转换后保持平行。作为替代方案,考虑JavaFX 3D,它为perspective projection 提供PerspectiveCamera;这个完整的example 使用了Rotate.Y_AXIS,但是Rotate.X_AXIS 会产生想要的效果。还可以考虑一个 Java Advanced Imaging Warp,引用 here,它提供了一个 WarpPerspectivePerspectiveTransform

【讨论】:

  • “仿射变换要求平行线在变换后保持平行” 我一直想知道文档在这方面的措辞(这对我来说是一样的,但是我不确定)。很遗憾,因为我想使用变换将世界的“平面”地图(如this answer 中所见)变成一个地球仪。但我认为使用核心 Java 实现这一目标的唯一方法是使用转换。运气不好!
  • @AndrewThompson:可能是上面引用的PerspectiveTransform,但我不确定墨卡托是否有逆。另外,我不喜欢“需要”这个词。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
  • 2014-07-07
  • 1970-01-01
  • 2012-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多