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

时间:2014-12-16 03:10:57

标签: java math jpanel scale java-2d

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

我可以得到从0,0到正数或负数的点数。

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

1 个答案:

答案 0 :(得分:2)

找到极值点(最左边的一个等)坐标

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使用不同的系数)