Общая точка. Два отрезка на плоскости заданы координатами своих концов. Определить, имеют ли эти отрезки общие точки - C#
Формулировка задачи:
Помогите до ума довести
Общая точка. Два отрезка на плоскости заданы координатами своих концов. Определить, имеют ли эти отрезки общие точки
double Q(Point a, Point b, Point t) {
return t.x*(b.y-a.y)+t.y*(a.x-b.x)+a.y*b.x-a.x*b.y;
}
string res = "не пересекаются";
Point a,b, A,B;
int x1_ab,y1_ab,x2_ab,y2_ab,x1_AB,y1_AB,x2_AB,y2_AB;
a=new Point(x1_ab,y1_ab);
b=new Point(x2_ab,y2_ab);
A=new Point(x1_AB,y1_AB);
B=new Point(x2_AB,y2_AB);
if (Q(a,b;A)*Q(a,b;B)<0 && Q(A,B;a)*Q(A,B;b)<0)
res = "пересекаются";Решение задачи: «Общая точка. Два отрезка на плоскости заданы координатами своих концов. Определить, имеют ли эти отрезки общие точки»
textual
Листинг программы
{
return t.x*(b.y-a.y)+t.y*(a.x-b.x)+a.y*b.x-a.x*b.y;
}
string res = "не имеют общие точки";//результат нашей проверки
int x1_AB=0,y1_AB=0,x2_AB=0,y2_AB=0,x1_CD=0,y1_CD=0,x2_CD=0,y2_CD=0;
Console.Write("Первый отрезок AB\n");
Console.Write("Введите координату Х для точки A: ");
x1_AB = Convert.ToInt32(Console.ReadLine());
Console.Write("Введите координату Y для точки A: ");
y1_AB = Convert.ToInt32(Console.ReadLine());
Console.Write("Введите координату Х для точки B: ");
x2_AB = Convert.ToInt32(Console.ReadLine());
Console.Write("Введите координату Y для точки B: ");
y2_AB = Convert.ToInt32(Console.ReadLine());
Console.Write("Первый отрезок CD\n");
Console.Write("Введите координату Х для точки C: ");
x1_CD = Convert.ToInt32(Console.ReadLine());
Console.Write("Введите координату Y для точки C: ");
y1_CD = Convert.ToInt32(Console.ReadLine());
Console.Write("Введите координату Х для точки D: ");
x2_CD = Convert.ToInt32(Console.ReadLine());
Console.Write("Введите координату Y для точки D: ");
y2_CD = Convert.ToInt32(Console.ReadLine());
Points A = new Points(x1_AB, y1_AB);
Points B = new Points(x2_AB, y2_AB);
Points C = new Points(x1_CD, y1_CD);
Points D = new Points(x2_CD, y2_CD);
if ((my(A,B,C)*my(A,B,D)<0 && my(C,D,A)*my(C,D,B)<0)||(A.x==C.x && A.y==C.y && B.x==D.x && B.y==D.y))
res = "имеют общие точки";
Console.Write("Отрезки AB и CD " + res+"\n");
}