y=x*(y1+y2)/(x1+x2)
x=y*(x1+x2)/(y1+y2)
Пересечение вертикальной или горизонтальной прямой отрезка
(если добавить косинус или синус возможно походу и не горизонтального и вертикального, а под углом)
если обе точки над вашей или под вашей (правее и левее для у) то точка не входит
если выше и ниже или правее, левее то входит
точки задаются в виде a,b,c,d,e,f
потом сортируются x3>x2>x2 и y3>y2>y1
import java.lang.*;
import java.util.*;
import java.math.*;
public class Program {
public static void main(String[] args) {
// TODO Auto-generated method stub
long x1=0;
long x2=0;
long x3=0;
long x=0;
long yp1=0;
long yp2=0;
long xp1=0;
long xp2=0;
long y2=0;
long y3=0;
long y1=0;
long ind1=0;
long sx1=0;
long sx2=0;
long sx3=0;
long sy2=0;
long sy3=0;
long sy1=0;
long y=0;
long a=0;
long b=0;
long c=0;
long d=0;
long e=0;
long f=0;
//сортировка координат по x
if((a<=b)&&(b<=c)){x1=a; x2=b; x3=c; y1=d; y2=e; y3=f;}
if((a<=c)&&(c<=b)){x1=a; x2=c; x3=b; y1=d; y2=f; y3=e;}
if((b<=a)&&(a<=c)){x1=b; x2=a; x3=c; y1=e; y2=d; y3=f;}
if((c<=a)&&(a<=b)){x1=c; x2=a; x3=b; y1=f; y2=d; y3=e;}
if((b<=c)&&(c<=a)){x1=b; x2=c; x3=a; y1=e; y2=f; y3=d;}
if((c<=b)&&(b<=a)){x1=c; x2=b; x3=a; y1=f; y2=e; y3=d;}
//Сортировка координат по y
if((d<=e)&&(e<=f)){sy1=d; sy2=e; sy3=f; sx1=a; sx2=b; sx3=c;}
if((f<=e)&&(e<=d)){sy1=f; sy2=e; sy3=d; sx1=c; sx2=b; sx3=a;}
if((e<=d)&&(d<=f)){sy1=e; sy2=d; sy3=f; sx1=b; sx2=a; sx3=c;}
if((f<=d)&&(d<=e)){sy1=f; sy2=d; sy3=e; sx1=c; sx2=a; sx3=b;}
if((e<=f)&&(f<=d)){sy1=e; sy2=f; sy3=d; sx1=b; sx2=c; sx3=a;}
if((d<=f)&&(f<=e)){sy1=f; sy2=e; sy3=d; sx1=a; sx2=c; sx3=b;}
ind1=0; //это число будет равно 1 если точка входит и 0 если она не входит
//Проверка по x
if((x1!=x2)&&(x1!=x3)&&(x3!=x2)){if( ((y1==y2)&&(y1==y3))==false ){
if(x>x1){if(x<(x2)){
yp1=x*(y1+y2)/(x1+x2); yp2=x*(y1+y3)/(x1+x3);
if(((yp1>y1)&&(yp2<y2))||((yp1<y1)&&(yp2>y2))){ind1=1;}
}}
if(x<x3){if(x>x2){
yp1=x*(y+y2)/(x1+x2); yp2=x*(y1+y3)/(x1+x3);
if(((yp1>y1)&&(yp2<y2))||((yp1<y1)&&(yp2>y2))){ind1=1;}
}}
}}else{
//Проверка по y
if((sy1!=sy2)&&(sy1!=y3)&&(sy3!=sy2)){ if( ((sx1==sx2)&&(sx1==sx3))==false ){
if(y>sy1){if(y<(sy2)){
xp1=y*(sx1+sx2)/(sy1+sy2); xp2=y*(sx1+sx3)/(sy1+sy3);
if(((xp1>sx1)&&(xp2<sx2))||((xp1<sx1)&&(xp2>sx2))){ind1=1;}
}}
if(y<sy3){if(y>sy2){
xp1=y*(x+sx2)/(sy1+sy2); xp2=x*(sx1+sx3)/(sy1+sy3);
if(((xp1>sx1)&&(xp2<sx2))||((xp1<sx1)&&(xp2>sx2))){ind1=1;}
}}
}}}//обре проверки завершились
//если треугольник прямоугольный(4 варианта прямоугольных треугольников)
if( ( ((sx1==sx2)&&(sx2==sx3)) || ((sy1==sy2)&&(sy2==sy3)) )== false ){
if( ((sx1==sx2)&&(sy1==sy2))||((sx2==sx3)&&(sy2==sy3))||((sx1==sx2)&&(sy2==sy3))||((sx2==sx3)&&(sy1==sy2)) )
{
if((y>sy1)&&(y<sy3)){
xp1=y*(x+sx2)/(sy1+sy2); xp2=x*(sx1+sx3)/(sy1+sy3);
if(((x>xp1)&&(x<xp2))||((x<xp1)&&(x>xp2))){ind1=1;}
}}}
System.out.println(ind1);
}}