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