gpt4 book ai didi

java - 我的伪 3D 程序正在绘制一个点而不是一条线

转载 作者:行者123 更新时间:2023-12-02 00:56:57 25 4
gpt4 key购买 nike

我的一级伪 3D 程序在 0,0 处制作一个点而不是一条线。我认为没有理由这样做。我对java比较陌生。这也是第一次发帖提问。如果我的代码很困惑,那就是原因。我设想这段代码能够创建一个伪 3D,通过使用Calculate3D(x, y, z) 方法输入新位置,可以在 x、y 和 z 轴上移动。感谢您的帮助!

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class threeD extends JPanel implements ActionListener {
public static int WIDTH = 400;
public static int HEIGHT = 400;
int counter = 0;
int x1, y1, x2, y2, FOV = 150, xpo = 0, ypo = 0, zpo = 80, fx1 = 20, fy1 = 20;

private JFrame window;
private Timer timer;

public static void main(String[] args) {
new threeD().start();
}

public void start() {
window = new JFrame();
window.setLayout(new BorderLayout());
window.add(this, BorderLayout.CENTER);
setPreferredSize(new Dimension(WIDTH, HEIGHT));
window.pack();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
window.setResizable(false);

timer = new Timer(1000 / 60, this);
}

public void Calculate3D(int x, int y, int z) {
x1 = fx1;
y1 = fy1;
x2 = FOV * ((x + xpo) / (z + zpo));
y2 = FOV * ((y + ypo) / (z + zpo));
fx1 = x2;
fy1 = y2;
counter++;
}

@Override
public void paintComponent(Graphics g) {
g.setColor(Color.BLACK);
g.fillRect(0, 0, WIDTH, HEIGHT);
g.setColor(Color.WHITE);
for (int i = 0; i < counter; i++) {
g.drawLine(x1, y1, x2, y2);
}
}

@Override
public void actionPerformed(ActionEvent e) {
Calculate3D(20, 20, 0);
repaint();
}
}

最佳答案

看起来您的actionPerformed,因此未调用Calculate3D。如果您调用例如中的方法start,您将看到线条已绘制。如果您打算在按钮单击等上画线,请参阅此 Tutorial欲了解更多信息。

关于java - 我的伪 3D 程序正在绘制一个点而不是一条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57810429/

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