java - 如何解决这些与坡度有关的多个问题?

标签 java

我想编写一小段代码,使椭圆走向另一个点。

原理很简单:

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/

相关文章:

java.lang.IllegalArgumentException : Unknown entity: com. myapplication.entities.PersonClass

java - 正确的时钟以提高 Java 的准确性

java - Web 服务器向 J2ME 应用程序发送命令

java - 没有访问器来设置属性 private Final java.util.Map org.springframework.boot.configurationprocessor.json.JSONObject.nameValuePairs

java - 如何使用 gremlin (Apache TinkerPop) 在图数据库中搜索顶点?

java - 如何使用 Spring + Teradata 配置多个事务管理器

Java - 子类验证设计模式

java - 如何在 Java 中相互使用两个类中的方法?

总结其他注解的Java注解

java - 从 Eclipse 4.3.0 打开数据源资源管理器