当前位置: 首页 > 面试题库 >

检查点在Java Swing中是否在线

施俊明
2023-03-14
问题内容

我先画了一条线,然后画了一个点,然后我要检查该点是否在线上。我已经在数组中取得了一条线坐标(因为有多条线)。我想在最后一行检查当前点吗?

if (positionX1 == positionX2 && positionY1 == positionY2) {
    float m = line.getSlope(
        drawLines[currentLines - 1][2], drawLines[currentLines - 1][3],
        drawLines[currentLines - 1][0], drawLines[currentLines - 1][1]);
    m = Float.parseFloat(df.format(m));
    float c = line.getIntercept(
        drawLines[currentLines - 1][2], drawLines[currentLines - 1][3],
        drawLines[currentLines - 1][0], drawLines[currentLines - 1][1]);
    c = Math.round(c);
    m1 = line.getSlope(positionX2, positionY2,
        drawLines[currentLines - 1][0], drawLines[currentLines - 1][1]);
    m1 = Float.parseFloat(df.format(m1));
    System.out.println(m + "   " + m1);
    c1 = line.getIntercept(positionX2, positionY2,
        drawLines[currentLines - 1][0], drawLines[currentLines - 1][1]);
    c1 = Math.round(c1);

    if (m == m1 && ((c == c1) || (c == c1 - 1) || (c == c1 + 1))) {
        System.out.println("Point is on Line");
    }
}

问题是当一点在直线的起点附近或直线大约在m1和c1的垂直值相差很大时。因此,检测点是否在线上存在一个问题。我如何检查这种情况?


问题答案:

Line2D.ptSegDist(x1, y1, x2, y2, xP, yP)如果点(xP,yP)在从(x1,y1)到(x2,y2)的线段上,则返回0.0。
Line2D.ptLineDist对无限行执行相同的操作。



 类似资料:
  • 我有一个用lat/long表达的观点 我有一个以米表示的半径值。我需要检查另一个点,也用拉特/long表示,是否在圆内。 如果我在平面上,我可以简单地使用公式 正如这些答案所深刻解释的那样。 然而,根据纬度/经度的用法,我不能使用这个公式,因为行星是球形的。 如何计算从任何给定点到中心的距离以与半径进行比较?

  • 我偶尔收到以下信息: 这发生在具有表的页面中,其中的行延伸到视点之后。 我用来在表中选择随机行的方法 是否有一种方法来检查是否有元素在#Focus之后?

  • 我从我的网络商店API调用中获取XML,其结构非常像下面的示例: 其中有更多的参数,数量取决于许多外部因素。我正在尝试获取用户名,当id“111”和id“112”的值是我要查找的值时 上述代码按预期返回“userOne”和“userTwo”。 问题是,Id“111”要么有值“Param 1 is on”要么什么都没有,如果没有值,它就不会显示在XML中。所以我需要一个表达式来检查id为“111”的

  • 我有一种感觉,我在这件事上完全错了。但无论如何。 我有一个sql数据库,它本质上是一个有目的的非规范化表,我构造这个表是为了使这项任务对我来说更容易,所以我可以从一个表中获取内容。 我有一张成双成对的桌子,像这样: 等等 所以对于我的neo4j图数据库,我希望每个用户ID作为一个节点,其他的东西不是太重要,但基本上是关系中的东西。 我只希望每个用户有一个节点,所以我的感觉是,如果我这样做: 当我们

  • 调用web3.eth.isMining()方法来检查节点是否在进行挖矿。 调用: web3.eth.isMining([callback]) 返回值: 一个Promise对象,挖矿时其解析值为true,否则为false。 示例代码: web3.eth.isMining().then(console.log); > true

  • 问题内容: 我有一个嵌入了数据库的桌面应用程序。当我执行程序时,我需要检查特定的表是否存在,如果不存在则创建它。 给我的数据库一个名为conn的Connection对象,我该如何检查呢? 问题答案: 您可以使用可用的元数据: 有关更多详细信息,请参见此处。还要注意JavaDoc中的注意事项。