Общая точка. Два отрезка на плоскости заданы координатами своих концов. Определить, имеют ли эти отрезки общие точки - 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");
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.786 из 5
Похожие ответы