【问题标题】:Right logic increment to draw on JComponent (Java)在 JComponent (Java) 上绘制的正确逻辑增量
【发布时间】:2014-01-31 00:59:50
【问题描述】:

我正在尝试构建一个在 JFrame 上绘制函数的程序(使用 JComponent)...但我似乎无法获得正确的增量以便正确绘制。

这些变量是用户定义的:

int lowerX // lower x domain
int higherX // higher x domain
int frameSizeX // horizontal frame size
int frameSizeY // vertical frame size

假设我已经成功计算出 f(x):

double valuesX[n] // x points from lower x domain to higher x domain
double valuesY[n] // y points from lower x domain to higher x domain

例如,如果lowerX = -4,higherX = 4,frameSizeX和frameSizeY = 1000,函数为x^2:

valuesX[0] = -4, valuesX[1] = -3.992 | valuesY[0] = 16, valuesY[1] = 15.936064

我正在尝试构建一个应该执行此操作的 valuesYGraph[] 数组:

(x = -4, y = 16) valuesYGraph[0] = 0,
(x = -3, y = 9) valuesYGraph[*] = 218.75 ... 
(x = 4, y = 16) valuesY[999] = 0.

* = 任意一个数组 = -3

过去几天我一直在尝试解决这个问题,但我被卡住了。 JComponent 可以让 +y 下降而不是上升,这使得它更加混乱......

增量也应该是普遍有效的(例如,它适用于 x^2 以及 sin(x) 或 x^5 + 5)。

有什么建议吗?感谢您的帮助!

【问题讨论】:

    标签: java discrete-mathematics


    【解决方案1】:

    你似乎得到了 218.75 的值,它是将屏幕的一半(500 像素)除以 16,然后乘以 9,得到 281.25,然后从 500 中减去。但是,如果你想让事物居中,请记住屏幕上应该是 33 个分区,而不是 32 个,因为 0 占一个位置。此外,您已将 x 范围分成 1000 个部分,而不是 999 个部分。

    您需要将 x 范围划分为 999 部分,而不是 1000,因为假设您想获得 0-1 范围内的 3 个离散 x 值,您需要将 x 除以 2 而不是 3,以获得 0.5 的距离分隔x 值 (0, 0.5, 1)。因此,您的第二个 x 值不应该是 -3.992,而是 (-4 + (8/999)) = -3.991991991... 等等。

    然后对你的 y 值做类似的事情 -> 取你想要的最大范围,除以 999,然后用它作为增量,根据你的函数值确定正确的像素高度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      相关资源
      最近更新 更多