首页 > 解决方案 > 如何使用线中的两个点和线段的两个端点来检测线和线段是否相交

问题描述

我必须编写一个 Java 程序来读取一条线和一条线段,然后确定它们是否相交。当它们完全重叠时,将其视为相交。使用变量 ((lp1x, lp1y), (lp2x, lp2y)) 表示一条线,使用变量 ((sp1x, sp1y), (sp2x, sp2y)) 表示一条线段。我已经定义了四种情况(两条线都是垂直的,两种情况是线是垂直的,线段不是垂直的,反之亦然,如果两条线都不垂直)。我只需要知道如何检测线是否相交。编码语言是 NetBeansIDE 上的 Java。先感谢您!

到目前为止,我有这个:

    if(lp1x == lp2x){
        //line is vertical
        if(sp1x == sp2x){
            //line segment is vertical (case 1)
            System.out.println("case 1");
        }
        else{
            //case 2
            System.out.println("case 2");
        }
    }
    else{
        //line is not vertical
        if(sp1x == sp2x){
            //line segment is vertical (case 3)
            System.out.println("case 3");
        }
        else{
            //case 4, neither are vertical
            System.out.println("case 4");

        }
    }

标签: java

解决方案


推荐阅读