Java 我的伪3D程序画的是点而不是线

Java 我的伪3D程序画的是点而不是线,java,graphics,3d,draw,Java,Graphics,3d,Draw,我的一类伪3D程序是在0,0处制作一个点,而不是一条线。我看不出它为什么要这样做。我对java比较陌生。这也是第一次发布问题。如果我的代码很乱,那就是原因。 我设想这段代码能够通过使用Calculate3D(x,y,z)方法输入一个新的位置来制作一个可以在x,y和z轴上移动的伪3D。谢谢你的帮助 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Graph

我的一类伪3D程序是在0,0处制作一个点,而不是一条线。我看不出它为什么要这样做。我对java比较陌生。这也是第一次发布问题。如果我的代码很乱,那就是原因。 我设想这段代码能够通过使用Calculate3D(x,y,z)方法输入一个新的位置来制作一个可以在x,y和z轴上移动的伪3D。谢谢你的帮助

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();
    }
}
导入java.awt.BorderLayout;
导入java.awt.Color;
导入java.awt.Dimension;
导入java.awt.Graphics;
导入java.awt.Toolkit;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.Timer;
公共类threeD扩展JPanel实现ActionListener{
公共静态整数宽度=400;
公共静态内部高度=400;
int计数器=0;
int-x1,y1,x2,y2,FOV=150,xpo=0,ypo=0,zpo=80,fx1=20,fy1=20;
私有JFrame窗口;
私人定时器;
公共静态void main(字符串[]args){
新的3D().start();
}
公开作废开始(){
window=newjframe();
setLayout(新的BorderLayout());
添加(此,BorderLayout.CENTER);
setPreferredSize(新尺寸(宽度、高度));
window.pack();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
window.setresizeable(false);
定时器=新定时器(1000/60,本);
}
公共空间计算3d(整数x,整数y,整数z){
x1=fx1;
y1=fy1;
x2=FOV*((x+xpo)/(z+zpo));
y2=FOV*((y+ypo)/(z+zpo));
fx1=x2;
fy1=y2;
计数器++;
}
@凌驾
公共组件(图形g){
g、 设置颜色(颜色为黑色);
g、 fillRect(0,0,宽度,高度);
g、 setColor(Color.WHITE);
对于(int i=0;i
您的
操作似乎已执行
,因此不会调用
计算3d
。如果在例如
start
中调用该方法,您将看到绘制了线。如果要在按钮单击等按钮上画线,请参阅此以了解更多信息。

最大的问题是,所有数字都是整数,整数除法很快生成0。改用
double
。除此之外,还不清楚代码应该做什么。