Advertisement
genium08

Точка и многоугольник. Задача аналитической геометрии.

Jan 16th, 2024
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.24 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.     int N; // N - количество точек многоугольника
  6.     int Xt, Yt;
  7.     bool is_inside = true; // изначально считаем, что точка внутри многоугольника
  8.     cout << "Вводите количество точек многоугольника: ";
  9.     cin >> N;
  10.  
  11.     int X[N], Y[N]; // создание массивов с координатами точек многоугольника (X; Y)
  12.     for (int i = 0; i < N; i++) {
  13.         cin >> X[i] >> Y[i];
  14.     }
  15.  
  16.     cout << "Введите координаты искомой точки: ";
  17.     cin >> Xt >> Yt; // ввод координат искомой точки (Xt; Yt)
  18.  
  19.     // По условию точки не лежат на сторонах многоугольника
  20.     for (int i = 0; i < N; i++) {
  21.         int x1 = X[i], y1 = Y[i];
  22.         int x2 = X[(i + 1) % N], y2 = Y[(i + 1) % N];
  23.         int x_ch = X[(i + 2) % N], y_ch = Y[(i + 2) % N];
  24.         // Вычисление коэффициентов
  25.         int a = y1 - y2,
  26.         b = x2 - x1, c = -1 * (a * x1 + b * y1);
  27.         // Проверка на положение точки относительно стороны
  28.         int pos = (a * Xt + b * Yt + c);
  29.         int pos_checker = a * x_ch + b * y_ch + c;
  30.         if ((pos < 0 and pos_checker > 0) or (pos > 0 and pos_checker < 0)) {
  31.             is_inside = false;
  32.             break;
  33.         }
  34.     }
  35.  
  36.     if (is_inside == true) {
  37.         cout << "Точка находится внутри многоугольника";
  38.     } else {
  39.         cout << "Точка не находится внутри многоугольника";
  40.     }
  41.     return 0;
  42. }
  43.  
  44. Начало каждого теста:
  45. 5
  46. -2 -4
  47. -5 -1
  48. -3 4
  49. 7 2
  50. 7 -2
  51.  
  52. Тест №1
  53. -5 -3
  54. Тест №2
  55. -5 2
  56. Тест №3
  57. 4 3
  58. Тест №4
  59. 6 -3
  60.  
  61. В тестах с 1 по 4
  62. Вывод: Точка не находится внутри многоугольника
  63.  
  64. Тест №5
  65. -3 -2
  66. Тест №6
  67. -3 3
  68. Тест №7
  69. 5 2
  70. Тест №8
  71. 5 -2
  72.  
  73. В тестах с 5 по 8
  74. Вывод: Точка находится внутри многоугольника
  75.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement