编程绘制正切曲线的图形,使得一个-90度到+90度的正切曲线图形正好布满整个JFrame窗口。
时间: 2024-06-10 14:05:06 浏览: 60
您可以通过使用Java中的Graphics类和Math库中的tan函数来编写一个可以绘制正切曲线的程序。下面是一个简单的示例代码:
```java
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TanCurve extends JPanel {
private static final int WIDTH = 800;
private static final int HEIGHT = 600;
private static final double SCALE = 50.0; // 每个像素的刻度
public void paintComponent(Graphics g) {
super.paintComponent(g);
// 设置绘图区域背景为白色
g.setColor(Color.WHITE);
g.fillRect(0, 0, getWidth(), getHeight());
// 设置坐标系
g.setColor(Color.BLACK);
g.drawLine(0, getHeight() / 2, getWidth(), getHeight() / 2);
g.drawLine(getWidth() / 2, 0, getWidth() / 2, getHeight());
for (int i = -3; i <= 3; i++) {
g.drawString(String.valueOf(i), (int) (getWidth() / 2 + i * SCALE), getHeight() / 2 + 15);
g.drawLine((int) (getWidth() / 2 + i * SCALE), getHeight() / 2 - 5,
(int) (getWidth() / 2 + i * SCALE), getHeight() / 2 + 5);
g.drawString(String.valueOf(i), getWidth() / 2 + 15, (int) (getHeight() / 2 - i * SCALE));
g.drawLine(getWidth() / 2 - 5, (int) (getHeight() / 2 - i * SCALE),
getWidth() / 2 + 5, (int) (getHeight() / 2 - i * SCALE));
}
// 绘制正切曲线
g.setColor(Color.RED);
double y0 = Math.tan(Math.toRadians(-90));
int x0 = (int) (getWidth() / 2 + y0 * SCALE);
for (int x = 0; x <= getWidth(); x++) {
double rad = Math.toRadians((x - getWidth() / 2) / SCALE);
double y = Math.tan(rad);
int yPixel = (int) (getHeight() / 2 - y * SCALE);
if (yPixel >= 0 && yPixel <= getHeight()) {
g.drawLine(x - 1, yPixel, x, yPixel);
}
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("正切曲线");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(WIDTH, HEIGHT);
TanCurve curve = new TanCurve();
frame.add(curve);
frame.setVisible(true);
}
}
```
在这个程序中,我们使用JFrame和JPanel来创建GUI窗口,使用Graphics类来绘制图形。程序先绘制了一个坐标系,然后计算每个像素对应的正切值,并将其在绘图区域上绘制出来,最终得到了一个正切曲线图形。