Имея две точки, найдите, находится ли третья точка выше или ниже сформированной линии

Я использовал API облачного видения Google, чтобы распознать документ с таблицей, но иногда изображение будет немного повернуто, я пытаюсь получить значение, используя boundingPoly ключа, который я хочу, но как мне его получить, если это не так там же 'y'.

Я думал сделать «линию» выше и ниже boundingBox и найти, находится ли точка между ними, но я не знаю, как это сделать.

[18] => Array
(
  [description] => Date
  [boundingPoly] => Array
  (
    [vertices] => Array
    (
      [0] => Array
      (
        [x] => 698
        [y] => 289
      )
      [1] => Array
      (
        [x] => 729
        [y] => 289
      )
      [2] => Array
      (
        [x] => 729
        [y] => 301
      )
      [3] => Array
      (
        [x] => 698
        [y] => 301
      )
    )
  )
)
[66] => Array
(
  [description] => 25/03/2019
  [boundingPoly] => Array
  (
    [vertices] => Array
    (
      [0] => Array
      (
        [x] => 1007
        [y] => 290
      )
      [1] => Array
      (
        [x] => 1131
        [y] => 290
      )
      [2] => Array
      (
        [x] => 1131
        [y] => 307
      )
      [3] => Array
      (
        [x] => 1007
        [y] => 307
      )
    )
  )
)

Возможный дубликат Как проверить, образуют ли три точки прямую линию?

Nakilon 10.04.2019 11:21
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
155
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Учитывая точки (x1, y1) и (x2, y2), вы можете определить, является ли третья точка (x3, y3) коллинеарной, следующим образом.
Сначала вычислите наклон m1 = (y2 - y1) / (x2 - x1).
Затем вычислите наклон m2 = (y3 - y2) / (x3 - x2).
Линии коллинеарны тогда и только тогда, когда m1 = m2. Коллинеарность означает, что они лежат на одной линии.
Это не работает только для вертикальных линий; эти случаи можно обработать отдельно следующим образом: x1 = x2 = x3, то точки лежат на одной прямой; если x1 = x2 или x2 = x3, но не x1 = x2 = x3, то третья точка не коллинеарна первым двум.


Учитывая линии (m1, h1) и (m2, h2), вы можете определить, находится ли точка (x3, y3) «между» этими линиями, следующим образом.
Вычислите y1 = h1 + m1 * x3 и y2 = h2 + m2 * x3.
Тогда точка находится между линиями тогда и только тогда, когда y1 <= y3 <= y2 или y2 <= y3 <= y1.
2. Если обе линии являются вертикальными линиями x = x1 и x = x2, то точка находится между линиями тогда и только тогда, когда x1 <= x3 <= x2 или x2 <= x3 <= x1.
Если ровно одна из линий вертикальна (предположим, что это первая для простоты записи), то вычислите x2 = (y3 - h2) / m2; то точка находится между линиями тогда и только тогда, когда либо x1 <= x3 <= x2, либо x2 <= x3 <= x1.

(Если одна из ваших линий вертикальная, а другая горизонтальная, я думаю, что единственная точка между ними — это их точка пересечения).

Извините, я пытаюсь понять вторую формулу, но что такое (m1, h1)

Weslley Rocha 11.04.2019 14:28

@WeslleyRocha m1 — это наклон первой строки, а h1 — точка пересечения первой строки по оси y. Эти две вещи однозначно определяют любую (не вертикальную) линию.

Patrick87 11.04.2019 14:29

Другие вопросы по теме