我或多或少使用牛顿物理学完成了一个非常简单的行星引力模拟器。它可以变换和缩放行星以进行平移和缩放。这工作正常,鼠标输入和一切。我遇到的问题比其他任何问题都更美观。由于画布的原点位于窗口的左上角(在JPanel内,在JFrame内),因此所有内容都会缩放。我想知道有没有办法将原点设置到屏幕的中心,或者缩放特定点? (尽管AffineTransform.scale()只有一个构造函数,其中scaleX和scaleY作为args)。我已经尝试将画布的边界设置为负数:
canvas.setBounds(-width/2, -height/2, width/2, height/2);
(宽度和高度是屏幕尺寸)。
这显然不起作用,因为负数超出了小组的合作范围。
所以有人知道要做到这一点吗?是将屏幕中心设置为原点还是缩放特定点而不是原点?
答案 0 :(得分:3)
这里的技巧是连接AffineTransform
。