# Java Graphics - Draw Triangle and Check Given Point is Inside or Outside

I have given here Java Graphics program to draw a triangle and check whether the given point is inside or outside the triangle

## Source Code

```import java.lang.*;
import java.util.*;
import java.util.List;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;

public class PointInTriangle extends Frame {

public Polygon mypolygon = new Polygon();
public Point mypoint = new Point();

public static void drawPixel(Graphics g, int x, int y, int size, Paint color)
{
Graphics2D ga = (Graphics2D)g;
Shape circle = new Ellipse2D.Float(x, y, size, size);
ga.setPaint(color);
ga.draw(circle);
ga.setPaint(color);
ga.fill(circle);
}

public void paint(Graphics g) {
Graphics2D ga = (Graphics2D)g;
ga.setPaint(Color.red);
ga.draw(mypolygon);
ga.setPaint(Color.green);
drawPixel(g, mypoint.x, mypoint.y, 3, Color.blue);
}

public static int IsPointInBoundingBox(float x1, float y1, float x2, float y2, float px, float py)
{
float left, top, right, bottom; // Bounding Box For Line Segment

// For Bounding Box
if(x1 < x2)
{
left = x1;
right = x2;
}
else
{
left = x2;
right = x1;
}

if(y1 < y2)
{
top = y1;
bottom = y2;
}
else
{
top = y2;
bottom = y1;
}

if( (px+0.01) >= left && (px-0.01) <= right &&
(py+0.01) >= top && (py-0.01) <= bottom )
{
return 1;
}
else
return 0;

}

public static int LineSegmentIntersection(float l1x1, float l1y1, float l1x2, float l1y2,
float l2x1, float l2y1, float l2x2, float l2y2)
{

float dx, dy;
float intersection_X = 0;
float intersection_Y = 0;

dx = l1x2 - l1x1;
dy = l1y2 - l1y1;

float m1 = dy / dx;

float c1 = l1y1 - m1 * l1x1; // which is same as y2 - slope * x2

dx = l2x2 - l2x1;
dy = l2y2 - l2y1;

float m2 = dy / dx;
float c2 = l2y1 - m2 * l2x1; // which is same as y2 - slope * x2

if( (m1 - m2) == 0)
return 0;
else
{
intersection_X = (c2 - c1) / (m1 - m2);
intersection_Y = m1 * intersection_X + c1;
}

if(IsPointInBoundingBox(l1x1, l1y1, l1x2, l1y2, intersection_X, intersection_Y) == 1 && IsPointInBoundingBox(l2x1, l2y1, l2x2, l2y2, intersection_X, intersection_Y) == 1)
{
return 1;
}
else
return 0;
}

{
try
{
}
catch (Exception e)
{

e.printStackTrace();
return 0;
}
}

public static void main(String args[])
{
List< Integer > srcpoints = new ArrayList< Integer >();

for(int i = 0; i < 3; i++)
{
System.out.format("Enter x[%d]: ", i + 1);
System.out.format("Enter y[%d]: ", i + 1);
}
/***
***/

PointInTriangle frame = new PointInTriangle();
for(int i = 0; i < srcpoints.size(); i++)
{
int x = srcpoints.get(i++);
int y = srcpoints.get(i);
}

System.out.format("Enter Point X: ");
System.out.format("Enter Point Y: ");

/***
int x = 85;
int y = 100;
***/
int px = x + 1000;
int py = y;
frame.mypoint.x = x;
frame.mypoint.y = y;

int nCountIntersections = 0;

nCountIntersections += LineSegmentIntersection(srcpoints.get(0), srcpoints.get(1), srcpoints.get(2), srcpoints.get(3), x, y, px, py);
nCountIntersections += LineSegmentIntersection(srcpoints.get(2), srcpoints.get(3), srcpoints.get(4), srcpoints.get(5), x, y, px, py);
nCountIntersections += LineSegmentIntersection(srcpoints.get(4), srcpoints.get(5), srcpoints.get(0), srcpoints.get(1), x, y, px, py);

if( (nCountIntersections % 2) == 1)
System.out.println("The Given Point is inside the triangle");
else
System.out.println("The Given Point is outside the triangle");

{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
}
);

frame.setSize(300, 250);
frame.setVisible(true);
}
}

/***
Enter x[1]: 200
Enter y[1]: 200
Enter x[2]: 75
Enter y[2]: 75
Enter x[3]: 100
Enter y[3]: 200
Enter Point X: 85
Enter Point Y: 100
The Given Point is inside the triangle
***/
```