我正在尝试在固定的600x600像素JPanel
上绘制x,y点。原点(0,0)位于面板的中心(300,300)。
我可以得到从0,0到正数或负数的点数。
如何缩放它们,使距离原点最远的点靠近图的边缘?
答案 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使用不同的系数)