Подскажите алгоритм (наверно, скорее формулу) определения находятся ли все (допустим 3) вектора в одной полуплоскости.
Например (1,1) (1,2) (-1,1) находятся, а (1,1), (-1,0), (1,-1) нет.
Вектора в полуплоскости |
1. Заголовок темы должен быть информативным. В противном случае тема закрывается и удаляется ...
2. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
3. Одна тема - один вопрос (задача)
4. Спрашивайте и отвечайте четко и по существу!!!
Вектора в полуплоскости |
Fanat |
Сообщение
#1
|
Fanat Группа: Пользователи Сообщений: 261 Пол: Мужской Реальное имя: Сергей Репутация: 5 |
Подскажите алгоритм (наверно, скорее формулу) определения находятся ли все (допустим 3) вектора в одной полуплоскости.
Например (1,1) (1,2) (-1,1) находятся, а (1,1), (-1,0), (1,-1) нет. |
Fanat |
Сообщение
#2
|
Fanat Группа: Пользователи Сообщений: 261 Пол: Мужской Реальное имя: Сергей Репутация: 5 |
Подскажите алгоритм (наверно, скорее формулу) определения находятся ли все (допустим 3) вектора в одной полуплоскости. Например (1,1) (1,2) (-1,1) находятся, а (1,1), (-1,0), (1,-1) нет. В принципе уже сам придумал. Можно пройти по всем векторам, построить прямые ограничивающии полуплоскость, и если все остальные вектора лежат в ней или все не лежат то все вектора в одной полуплоскости. Буду делать так. Может можно лучше. |
Lapp |
Сообщение
#3
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
алгоритм (наверно, скорее формулу) определения находятся ли все (допустим 3) вектора в одной полуплоскости. Нет, скорее алгоритм .Идешь в цикле по всем векторам Ai. Производишь поворот системы координат (от исходного положения) на угол, который текущий вектор Ai составляет с осью Х. После такого поворота его Y-компонента занулится: (Aix, Aiy) -> (Aix', 0) . Все остальные вектора также подвергнутся преобразованию: (Ajx, Ajy) -> (Ajx', Ajy') . Проходишь в цикле по всем остальным (кроме i-того и последнего) векторам и смотришь произведение: mj = Ajy' * Aj+1y' Если все такие произведения неотрицательны: mj <=0 , то все вектора лежат в одной полуплоскости, причем сечение плоскости производится вектором Ai. Если нет - продолжить внешний цикл. Вроде так. Замучился индексы проставлять.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Fanat |
Сообщение
#4
|
Fanat Группа: Пользователи Сообщений: 261 Пол: Мужской Реальное имя: Сергей Репутация: 5 |
Нет, скорее алгоритм . Идешь в цикле по всем векторам Ai. Производишь поворот системы координат (от исходного положения) на угол, который текущий вектор Ai составляет с осью Х. После такого поворота его Y-компонента занулится: (Aix, Aiy) -> (Aix', 0) . Все остальные вектора также подвергнутся преобразованию: (Ajx, Ajy) -> (Ajx', Ajy') . Проходишь в цикле по всем остальным (кроме i-того и последнего) векторам и смотришь произведение: mj = Ajy' * Aj+1y' Если все такие произведения неотрицательны: mj <=0 , то все вектора лежат в одной полуплоскости, причем сечение плоскости производится вектором Ai. Если нет - продолжить внешний цикл. Вроде так. Замучился индексы проставлять.. Спасибо...думаю, пригодится |
Текстовая версия | 14.01.2025 23:21 |