java - 在 JComponent (Java) 上绘制的正确逻辑增量

标签 java discrete-mathematics

我正在尝试构建一个在 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

我正在尝试构建一个 valueYGraph[] 数组来执行以下操作:

(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)。

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

最佳答案

您似乎通过将屏幕的一半(500px)除以 16,然后乘以 9,得到 281.25,然后从 500 中减去,得到了值 218.75。但是,如果您希望物体居中,请记住那里屏幕上应该是 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,然后将其用作增量,根据函数值确定正确的像素高度。

关于java - 在 JComponent (Java) 上绘制的正确逻辑增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21470702/

相关文章:

java - iPOJO 组件已实例化但没有可见输出

Java正则表达式匹配

c++ - 一个数的所有除数的除数之和

java - 我无法打印转换后的字符串的值

java - 如何有效地搜索字符串

algorithm - Lehmer 的扩展 GCD 算法实现

python - 自定义排列,对等分布

javascript - 将元素与总和列表匹配

java - 使用堆栈计算前缀表达式

java - 如何从指定位置获取附件并将​​其存储到文件系统?