【问题标题】:How can I scale points to fit a fixed size graph?如何缩放点以适合固定大小的图形?
【发布时间】:2014-12-16 03:10:56
【问题描述】:

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

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

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

【问题讨论】:

  • AffineTransform 在“整体形状”上进行。其中“总形状”是所有数据点以及 X/Y 比例、图例和标签等。

标签: java math jpanel scale java-2d


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2013-09-09
    相关资源
    最近更新 更多