Java 如何缩放点以适应固定大小的图形?

Java 如何缩放点以适应固定大小的图形?,java,math,jpanel,scale,java-2d,Java,Math,Jpanel,Scale,Java 2d,我试图在一个固定的600x600像素JPanel上绘制x,y点。原点(0,0)位于面板(300300)的中心 我可以有从0,0到正或负千的点 如何缩放它们,使距离原点最远的点靠近图形的边缘?查找极值点(最左边的点等)坐标 MinNegativeX, MinNegativeY, MaxPositiveX, MaxPositiveY (例如,-3000,-2000,1500,4000) 定义 MaxX = Math.Max(Abs(MinNegativeX), Abs(MaxPositiveX)

我试图在一个固定的600x600像素
JPanel
上绘制x,y点。原点(0,0)位于面板(300300)的中心

我可以有从0,0到正或负千的点

如何缩放它们,使距离原点最远的点靠近图形的边缘?

查找极值点(最左边的点等)坐标

MinNegativeX, MinNegativeY, MaxPositiveX, MaxPositiveY 
(例如,-3000,-2000,1500,4000)

定义

MaxX = Math.Max(Abs(MinNegativeX), Abs(MaxPositiveX))
MaxY = Math.Max(Abs(MinNegativeYX), Abs(MaxPositiveY))
然后计算系数

CoeffX = 300 / MaxX
CoeffY = 300 / MaxY
Coeff = Math.Max(CoeffX, CoeffY)
现在,为每个点找到新坐标:

XNew[i] = X[i] * Coeff
YNew[i] = Y[i] * Coeff

(如果您想要各向异性比例,只需对X和Y使用不同的系数)

仿射变换
在“总体形状”上预成型。其中“总形状”是指所有数据点以及X/Y比例、图例和标签等。