Я более или менее закончил очень простой симулятор планетарной гравитации с использованием ньютоновской физики. Он может трансформировать и масштабировать планеты для панорамирования и масштабирования. Это отлично работает, ввод с помощью мыши и все такое. Проблема у меня больше эстетическая, чем что-либо еще. Поскольку начало холста находится в верхнем левом углу окна (внутри JPanel, внутри JFrame), все масштабируется относительно этой точки. Мне было интересно, есть ли способ установить начало координат в центр экрана или масштабировать в определенной точке? (Несмотря на то, что AffineTransform.scale() имеет только один конструктор с аргументами scaleX и scaleY). Я попытался установить границы холста как отрицательные числа как таковые:
canvas.setBounds(-width/2, -height/2, width/2, height/2);
(Ширина и высота - это размер экрана).
Очевидно, это не работает, так как отрицательные числа находятся вне координат панели.
Так кто-нибудь знает, как это сделать? Либо установка центра экрана в качестве начала координат, либо масштабирование относительно определенной точки, а не начала координат?