有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在JComponent(Java)上绘制离散数学右逻辑增量

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

我正在尝试构建一个ValuesGraph[]数组,该数组应执行以下操作:

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

有什么建议吗?谢谢你的帮助


共 (1) 个答案

  1. # 1 楼答案

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

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

    然后对y值执行类似操作->;取所需的最大范围,除以999,然后将其作为增量,根据函数值确定正确的像素高度