Java Program to Use Above Below Primitive to Test Whether Two Lines Intersect

This is a Java Program to whether two lines intersect or not. The above-below primitive can be used to test whether a line intersects a line segment. It does iff one endpoint of the segment is to the left of the line and the other is to the right. Segment intersection is similar but more complicated, and we refer you to implementations described below. The decision whether two segments intersect if they share an endpoint depends upon your application and is representative of the problems of degeneracy.

Here is the source code of the Java Program to Use Above Below Primitive to Test Whether Two Lines Intersect. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.

//This is a java program to find whether two lines intersect or not using above and below primitive
import java.util.Random;
 
public class Line_Intersection
{
    public static void main(String args[])
    {
        Random random = new Random();
 
        int x1, x2, y1, y2;
        x1 = random.nextInt(10);
        x2 = random.nextInt(10);
        y1 = random.nextInt(10);
        y2 = random.nextInt(10);
 
        System.out.println("The Equation of the 1st line is : (" + (y2 - y1)
                + ")x+(" + (x1 - x2) + ")y+(" + (x2 * y1 - x1 * y2) + ") = 0");
 
        int p1, p2, q1, q2;
        p1 = random.nextInt(10);
        p2 = random.nextInt(10);
        q1 = random.nextInt(10);
        q2 = random.nextInt(10);
 
        System.out.println("The Equation of the 2nd line is : (" + (q2 - q1)
                + ")x+(" + (p1 - p2) + ")y+(" + (p2 * q1 - p1 * q2) + ") = 0");
 
        int s1 = (y2 - y1) * p1 + (x1 - x2) * q1 + (x2 * y1 - x1 * y2);
        if (s1 < 0)
        {
            int s2 = (y2 - y1) * p2 + (x1 - x2) * q2 + (x2 * y1 - x1 * y2);
            if (s2 >= 0)
                System.out.println("The lines intersect");
            else if (s2 < 0)
                System.out.println("The lines doesn't intersect");
 
        }
        else if (s1 > 0)
        {
            int s2 = (y2 - y1) * p2 + (x1 - x2) * q2 + (x2 * y1 - x1 * y2);
            if (s2 <= 0)
                System.out.println("The lines intersect");
            else if (s2 > 0)
                System.out.println("The lines doesn't intersect");
        }
        else
            System.out.println("The point lies on the line");
    }
}

Output:

$ javac Line_Intersection.java
$ java Line_Intersection
 
The Equation of the line is : (2)x+(9)y+(-63) = 0
The Equation of the line is : (-4)x+(2)y+(-4) = 0
The lines doesn't intersect
 
The Equation of the line is : (-4)x+(-3)y+(43) = 0
The Equation of the line is : (-1)x+(-8)y+(73) = 0
The lines intersect

Related posts:

Java Program to Find the Peak Element of an Array O(n) time (Naive Method)
Using Spring ResponseEntity to Manipulate the HTTP Response
Disable Spring Data Auto Configuration
Java Program to Perform Cryptography Using Transposition Technique
Tips for dealing with HTTP-related problems
A Guide to Java SynchronousQueue
Vòng lặp for, while, do-while trong Java
Rest Web service: Filter và Interceptor với Jersey 2.x (P2)
Write/Read cookies using HTTP and Read a file from the internet
Spring Boot - Runners
Java Program to Find the GCD and LCM of two Numbers
Hướng dẫn Java Design Pattern – Chain of Responsibility
Guide to CopyOnWriteArrayList
Java Program to Implement Shunting Yard Algorithm
Java Program to Implement Disjoint Set Data Structure
Map Serialization and Deserialization with Jackson
How to Set TLS Version in Apache HttpClient
Java Program to Implement Hash Tables Chaining with Doubly Linked Lists
A Guide to Iterator in Java
New in Spring Security OAuth2 – Verify Claims
Java Program to Implement Bresenham Line Algorithm
StringBuilder vs StringBuffer in Java
Multipart Upload with HttpClient 4
Binary Numbers in Java
Java Program to Implement Flood Fill Algorithm
Java Program to Generate Random Numbers Using Middle Square Method
Java Program to Implement Tarjan Algorithm
Receive email using POP3
Java Program to Check whether Graph is a Bipartite using BFS
Java Program to Perform Encoding of a Message Using Matrix Multiplication
Guide to the Volatile Keyword in Java
Spring Cloud AWS – Messaging Support