我想编写一小段代码,使椭圆走向另一个点。
原理很简单:
int ellipseX = 30;
int ellipseY = 30;
int ellipse1X = MouseInfo.getPointerInfo().getLocation().x;
int ellipse1Y = MouseInfo.getPointerInfo().getLocation().y;
//m=(y2-y1)/(x2-x1)
double slopex = ellipse1X/ellipseX;
double slopey = ellipse1Y/ellipseY;
public void paintComponent(Graphics g){
g.fillOval(ellipseX, ellipseY, 4, 4);
ellipseX+=slopex;
ellipseY+=slopey;
repaint();
}
现在有几个问题 -
double + int = double 使其无法成为椭圆的可能“x”或“y”。
坡度不会更新,因此它只会朝该方向移动并保持该方向。
此外还有一大堆问题。我该如何解决这个问题?
最佳答案
当您期望 double 作为返回类型时,将两个整数相除有一个小技巧。在执行除法之前,您需要将数字显式转换为双倍。这是一个快速修复,我还将 ellipseX 和 ellipseY 的数据类型更改为 double:
double ellipseX = 30;
double ellipseY = 30;
int ellipse1X = MouseInfo.getPointerInfo().getLocation().x;
int ellipse1Y = MouseInfo.getPointerInfo().getLocation().y;
//m=(y2-y1)/(x2-x1)
double slopex = (double)ellipse1X/ellipseX;
double slopey = (double)ellipse1Y/ellipseY;
public void paintComponent(Graphics g){
g.fillOval((int)ellipseX, (int)ellipseY, 4, 4);
ellipseX+=slopex;
ellipseY+=slopey;
repaint();
}
关于java - 如何解决这些与坡度有关的多个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34981331/