为什么小程序不能正确绘制三角函数图形?
Why applet does not draw trigonometric funtion's graph correctly?
我是 Java Swing 的初学者。我试图在 applet 中绘制 sin(x) 的图形。我很惊讶为什么小程序总是只绘制我的轴而不是我的图形?
这是我的代码:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
public class NewApplet extends Applet
{
public void init()
{
// TODO start asynchronous download of heavy resources
}
public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
//get dimension
Dimension appletSize = this.getSize();
// make the applet empty at start
g2.setBackground(Color.white);
g2.setColor(Color.white);
g2.fillRect(0, 0, appletSize.width, appletSize.height);
//now draw all you need
g2.setColor(Color.red);
//x axis
g2.drawLine(0, appletSize.height/2, appletSize.width, appletSize.height/2);
//y axis
g2.drawLine(appletSize.width/2, 0, appletSize.width/2, appletSize.height);
//function
g2.setColor(Color.black);
for(int k=0; k<=180; k++)
{
g2.drawString(".", (float) Math.toRadians(k), (float) Math.sin(Math.toRadians(k)));
}
}
}
我正在用 String
“.”绘制 180 个 sin(x) 点。 ,但我的小程序没有显示单个 plot.Why?
[提及我是否应该遵循任何好的做法或向我推荐任何用于绘制图形的好的库 (JAR)]
它实际上绘制一个图形。
由于正弦值介于-1和+1之间,弧度值介于0+π和-π之间,所以在这些坐标处绘制图表。
如果您更改此行:
g2.drawString(".", (float) Math.toRadians(k), (float) Math.sin(Math.toRadians(k)));
到这一行:
g2.drawString(".", (appletSize.height/2)+(float) Math.toRadians(k)*50, (appletSize.width/2)+(float) Math.sin(Math.toRadians(k))*50);
您将看到一半的图表(因为您已经为一半的图表编写了代码。)
此处:
- 我将
(appletSize.height/2)
和 (appletSize.width/2)
添加到值中,使它们位于屏幕中心(在图表上)
- 我把它们乘以50使图变大,否则图太小看不懂。
我是 Java Swing 的初学者。我试图在 applet 中绘制 sin(x) 的图形。我很惊讶为什么小程序总是只绘制我的轴而不是我的图形? 这是我的代码:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
public class NewApplet extends Applet
{
public void init()
{
// TODO start asynchronous download of heavy resources
}
public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
//get dimension
Dimension appletSize = this.getSize();
// make the applet empty at start
g2.setBackground(Color.white);
g2.setColor(Color.white);
g2.fillRect(0, 0, appletSize.width, appletSize.height);
//now draw all you need
g2.setColor(Color.red);
//x axis
g2.drawLine(0, appletSize.height/2, appletSize.width, appletSize.height/2);
//y axis
g2.drawLine(appletSize.width/2, 0, appletSize.width/2, appletSize.height);
//function
g2.setColor(Color.black);
for(int k=0; k<=180; k++)
{
g2.drawString(".", (float) Math.toRadians(k), (float) Math.sin(Math.toRadians(k)));
}
}
}
我正在用 String
“.”绘制 180 个 sin(x) 点。 ,但我的小程序没有显示单个 plot.Why?
[提及我是否应该遵循任何好的做法或向我推荐任何用于绘制图形的好的库 (JAR)]
它实际上绘制一个图形。
由于正弦值介于-1和+1之间,弧度值介于0+π和-π之间,所以在这些坐标处绘制图表。
如果您更改此行:
g2.drawString(".", (float) Math.toRadians(k), (float) Math.sin(Math.toRadians(k)));
到这一行:
g2.drawString(".", (appletSize.height/2)+(float) Math.toRadians(k)*50, (appletSize.width/2)+(float) Math.sin(Math.toRadians(k))*50);
您将看到一半的图表(因为您已经为一半的图表编写了代码。)
此处:
- 我将
(appletSize.height/2)
和(appletSize.width/2)
添加到值中,使它们位于屏幕中心(在图表上) - 我把它们乘以50使图变大,否则图太小看不懂。