Java 如何缩放点以适应固定大小的图形?
我试图在一个固定的600x600像素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)
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比例、图例和标签等。