gpt4 book ai didi

java - 用java画sin(x)的图

转载 作者:行者123 更新时间:2023-12-01 22:26:07 25 4
gpt4 key购买 nike

我目前正在尝试用java绘制sin(x)的图形。我的作业说明要求我仅使用 drawLine() 作为绘制图形的方法。我似乎不知道如何正确设置我的 y 值。现在我有一个 while 循环,用于逐像素绘制线条,但无法使 y 值正确。这是我到目前为止所拥有的。

public class GraphJComponent extends JComponent {
public void paintComponent (Graphics g){
Color axis = new Color(128, 128, 128);
g.setColor(axis);

int xShift = getWidth() / 50;
int xShift2 = getWidth() / 100;
int yShift = getHeight() / 10;
int yShift2 = getHeight() / 17;

g.drawLine(xShift,yShift,xShift,getHeight() - yShift);
g.drawLine(xShift, getHeight() / 2, getWidth() - xShift, getHeight() / 2);

g.drawString("0", xShift + xShift2, getHeight() / 2 + yShift2);
g.drawString("1", xShift + xShift2, yShift - (yShift2 / 4));
g.drawString("-1", xShift + xShift2, getHeight() - yShift + yShift2);
g.drawString("\u03c0", getWidth() / 2, getHeight() / 2 + yShift2);
g.drawString("2" + "\u03c0", getWidth() - (2 * xShift), getHeight() / 2 + yShift2);

Color line = new Color (255, 0, 0);
g.setColor(line);

int x = xShift;
int y = getHeight() / 2;




while (x < getWidth() - xShift){
x += 1;

y = ??;


g.drawLine(x, y, x, y);
}










}

}

是的,我知道有很多事情我可以整理或简化,这本身只是一个草稿,一旦一切正常,我就会清理它。我尝试了多种方法来正确设置 y 值,最接近的结果是绘制一条直线对角线,它并不像预期的那样弯曲。我该如何正确设置 y 值,以便正确绘制 [0, 2pi] 的正弦图?

尝试澄清问题:问题在于更改我的drawLine函数的y值。基本上,我所做的工作无法正确绘制 sin 函数,因为我只能找出线性递增它。它看起来像这样:

 /\
/ \ /
\/

我的最终问题是:如何才能使我的 y 坐标与 sin(x) 图的正确 y 坐标成比例?换句话说,我怎样才能使它“不直”并像 sin(x) 图那样正确弯曲。

看待问题的另一种方法是如何使用 JFrame 的像素正确“缩放”sin(x) 的 y 值?感谢您抽出宝贵的时间,非常感谢您的帮助。

最佳答案

好吧,David Wallace 在评论中提到您需要减少 x 增量,但我认为您正在尝试在整个 上获得 2*PI宽度间隔。

使用y = Math.sin(x*Math.PI*2/getWidth());,它会在将x值插入之前缩放它们>sin 函数。

关于java - 用java画sin(x)的图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28757480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com