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