gpt4 book ai didi

Java Line2D linesIntersect splinter

转载 作者:行者123 更新时间:2023-11-30 08:35:58 24 4
gpt4 key购买 nike

这两条线实际上是点,但是当我运行 lineIntersects 方法时,我得到“true”作为返回值,有谁知道发生了什么或者这是一个错误?这是 documentation link这是source ,当这可能失败时,既不会警告特殊情况。

import java.awt.geom.*;
public class Test {
public static void main(String[] args) {

// x1, y1, x2, y2
Line2D l1 = new Line2D.Double( 1.0, 1.0, 1.0, 1.0 );
Line2D l2 = new Line2D.Double( 2.0, 2.0, 2.0, 2.0 );

System.out.println(l1.intersectsLine(l2)); // true

}
}

仅供引用,我正在运行 Java 版本“1.8.0_74”

最佳答案

The Oracle Java test uses cross products以确定每个线段的端点是否跨越另一线段嵌入的无限直线。如果是这样,则称这些线相交。

问题在于,对于重合的端点,叉积退化为零,并且在被测试的点接触线的情况下,即叉积为零时,“跨接”测试全部返回 true。

因此,作为输入提供的两个点将始终返回 true。

几何解释是由两个重合点定义的“线”总是被任何其他点对跨越。因此,两条零长度线的端点相互跨越。

这可能不直观,但它是一致的。许多几何算法围绕退化做古怪的事情。如果您不喜欢这种行为,请包装该函数并返回您需要的内容。

关于Java Line2D linesIntersect splinter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37933777/

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