|
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
|
|
Определение с какой стороны от ломаной находится точка01.06.2021, 10:22. Показов 1429. Ответов 8
Метки нет (Все метки)
Я написал несколько вариантов кода и пытался решить задачу с помощью векторной алгебры, однако существуют крайние условия, при которых это не работает. Я нашёл также несколько вариантов в гугле, но они либо не точные, либо сводятся к моему решению и имеют те же недостатки. Код не могу предоставить из-за корпоративной политики.
В общем, дано: кривая на плоскости (можно использовать трёхмерное пространство), заданая набором точек. Существует точка (вообще, регулярная сетка из точек). Требуется - определить с какой стороны от кривой находится точка. Сторона определяется порядком следования точек. Первый и последний сегменты ломаной образуют прямые, уходящие в бесконечность. Собственно, нет проблем определить ближайший к точке отрезок и найти с какой стороны от отрезка находится точка. У меня возникают артефакты, когда между двумя ближайшими (у них общая точка ближе всего к заданной) отрезками находится острый угол. Тогда точка может быть по одну сторону от первого отрезка, но по другую сторону от второго отрезка. Как обработать эти случаи, чтобы они корректно отсчитывались? В конечном итоге я хочу получить два набора точек из сетки, которые разделены произвольной кривой (без самопересечений, лучи из концов кривой не пересекаются) Добавлено через 29 минут Простите за безграмотность, поторопился, не успел отредактировать вопрос.
0
|
|
| 01.06.2021, 10:22 | |
|
Ответы с готовыми решениями:
8
Найти ошибку: нужно вывести в какой четверти находится точка, если на оси, то указать на какой
Как однозначно определить с какой стороны точка? |
|
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 01.06.2021, 10:32 | |
|
без рисунка не совсем понятна проблема. Ты-то в ней варишься, небось, уже не одну неделю, а нам сходу тяжело вникнуть
0
|
|
|
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
|
|
| 01.06.2021, 11:05 [ТС] | |
|
Вот моё решение. На рисунке видно два артефакта сверху и одно маленькое пятно снизу возле острых углов. В холодной палитре точки "слева" от кривой, в тёплой "справа". Палитра зависит от расстояния точек до ближайшего сегмента кривой, простите за красное пятно возле неё. На серый прямоугольник не обращайте внимание - часть поверхности отсутствует.
0
|
|
|
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 01.06.2021, 11:25 | |
|
Честно говоря, понятнее не стало.
. Как я понял у тебя так получается: точка О лежит справа от AC, но слева от AB если идти по пути CAB.я не силён в топологии, но тут задача о контуре и о нахождении точки внутри контура или снаружи. Нужно рассматривать не один отрезок, а часть контура.
0
|
|
|
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
|
|
| 01.06.2021, 15:15 [ТС] | |
|
Да, проблема именно в этом.
Предположим, у меня всегда известны два отрезка СА и АВ. Добавлено через 3 часа 47 минут К сожалению, я её так и не решил. Я пишу, вдруг кто из комьюнити зайдёт в ветку..
0
|
|
|
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 01.06.2021, 15:26 | |
|
Aycon, может быть я ошибаюсь, но у тебя перперндикуляры из этой точки на отрезки должны быть одного знака, если точка лежит по одну сторону
0
|
|
|
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
|
|
| 02.06.2021, 14:26 [ТС] | |
|
Решил. Если кому нужно будет - напишу. Спасибо за помощь.
0
|
|
|
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
|
|
| 02.06.2021, 14:37 | |
|
Aycon, пиши, кому-нибудь точно пригодится
0
|
|
|
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
|
|
| 02.06.2021, 15:23 [ТС] | |
|
Псевдокод:
Если точка P ближе всего к прямой, на которой лежит один из сегментов (проекция точки Р лежит на сегменте и это наикратчайшее расстояние до кривой), то точка лежит слева от кривой если она лежит слева от этого сегмента. Иначе: АВ и ВС это ближайшие отрезки (из искомой линии) к точке P. Точка В общая и является ближайшей из кривой к Р. Если катчайший угол между векторами ВА и АС больше 90 градусов, то точка Р слева от кривой, если она слева от АВ и слева от ВС. Иначе: Если z координата векторного произведения ВА на ВС больше нуля (острый угол смотрит влево от кривой), то точка Р лежит слева от кривой, если она слева от АВ и слева от ВС. Иначе: Если z координата векторного произведения ВА на ВС меньше нуля (острый угол смотрит вправо от кривой), то точка Р лежит слева от кривой, если она слева от АВ или слева от ВС. Во всех остальных случаях точка лежит справа от кривой.
0
|
|
| 02.06.2021, 15:23 | |
|
Помогаю со студенческими работами здесь
9
Составить программу, которая по заданным координатам точки (x,y) определяет на какой линии или внутри какой области находится эта точка Найти наименьший элемент матрицы и указать, с какой стороны диагонали он находится Даны координаты вершин треугольника и точка, что находится внутри его. найти расстояние от точки до ближайшей стороны.
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|