roboforum.ru

Технический форум по робототехнике.

Энциклопедия по робототехнике - Поиск пути на карте (обсужд.)

Вопросы не попавшие в другие категории.

Re: Энциклопедия по робототехнике - Поиск пути на карте (обсужд.

Сообщение Digit » 20 дек 2007, 15:17

Да, если один из отрезков - точка, надо выкинуть. Этот случай считай рассмотрен выше.
Кстати, может имеет смысл сделать подраздел "Проверка, является ли отрезок точной" и на него потом ссылаться? :)

А вариант в АлгоЛисте - это параметрическая запись уравнения прямой. Типа нужна прямая, проходящая через точку М0(х0;у0) и направленная по вектору а{p;q}. Тогда уравнение имеет вид:
Код: Выделить всёРазвернуть
х = х0 + t * p
y = y0 + t * q


Ну а вектор если не известен, а известны его начало (х1; у1) и конец (х2;у2), то
Код: Выделить всёРазвернуть
p=x2-x1
q=y2-y1


А дальше принадлежность надо проверять просто по t - попадает ли между t для начала отрезка и t для его конца.
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Re: Энциклопедия по робототехнике - Поиск пути на карте (обсужд.

Сообщение =DeaD= » 20 дек 2007, 15:22

Digit писал(а):Да, если один из отрезков - точка, надо выкинуть. Этот случай считай рассмотрен выше.
Кстати, может имеет смысл сделать подраздел "Проверка, является ли отрезок точной" и на него потом ссылаться? :)

Раздел называется "прикладная геометрия", а не "геометрия для тупых", если кто-то не догадывается и не может догадаться, как проверить является ли отрезок точкой - это клиника и не к нам :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Энциклопедия по робототехнике - Поиск пути на карте (обсужд.

Сообщение Digit » 20 дек 2007, 15:23

Ну в клинику, так в клинику :D
Я там выше правил пост свой, пока ты дописал :)
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Re: Энциклопедия по робототехнике - Поиск пути на карте (обсужд.

Сообщение =DeaD= » 20 дек 2007, 15:29

Digit писал(а):А вариант в АлгоЛисте - это параметрическая запись уравнения прямой. Типа нужна прямая, проходящая через точку М0(х0;у0) и направленная по вектору а{p;q}. Тогда уравнение имеет вид:
Код: Выделить всёРазвернуть
х = х0 + t * p
y = y0 + t * q


Ну а вектор если не известен, а известны его начало (х1; у1) и конец (х2;у2), то
Код: Выделить всёРазвернуть
p=x2-x1
q=y2-y1


А дальше принадлежность надо проверять просто по t - попадает ли между t для начала отрезка и t для его конца.


Жесть! Не объясняй мне это, тем более так подробно, я от этого тупею :) я закончил мат-мех всё-таки :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Энциклопедия по робототехнике - Поиск пути на карте (обсужд.

Сообщение Digit » 20 дек 2007, 15:34

:ROFL:
Ну а откуда я знаю, что ты закончил? :) Ты просто так отозвался про АлгоЛист, что я решил пояснить...
Ладно, проехали :) Пусть это будет сообщение для тех, кто геометрию забыл :)
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Re: Энциклопедия по робототехнике - Поиск пути на карте (обсужд.

Сообщение =DeaD= » 20 дек 2007, 15:37

Digit писал(а):Ну а откуда я знаю, что ты закончил? :)

У меня в профиле вики всё написано :)
Похоже там кроме меня никто не читает и не пишет :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Энциклопедия по робототехнике - Поиск пути на карте (обсужд.

Сообщение Digit » 20 дек 2007, 15:59

Хо! :) И правда написано!

Ладно, отвлеклись мы чего-то...
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Re: Энциклопедия по робототехнике - Поиск пути на карте (обсужд.

Сообщение =DeaD= » 20 дек 2007, 16:13

Digit писал(а):Хо! :) И правда написано!

Ладно, отвлеклись мы чего-то...

Погоди страницу причесывать, ща попробую упросить свое изложение :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Энциклопедия по робототехнике - Поиск пути на карте (обсужд.

Сообщение Digit » 20 дек 2007, 17:31

Да я сегодня только около 18-00 по Москве причесывать смогу - работаю... :pardon:
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Re: Энциклопедия по робототехнике - Поиск пути на карте (обсужд.

Сообщение =DeaD= » 20 дек 2007, 22:55

Digit писал(а):А вариант в АлгоЛисте - это параметрическая запись уравнения прямой.

Переделал на параметрический подход, вроде не так уж и значительно проще стало, все равно большая часть проблем - когда прямые параллельны и там самый геморрой, чтоб всё четко работало, а в алголисте на этот вариант тупо забили :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Энциклопедия по робототехнике - Поиск пути на карте (обсужд.

Сообщение Digit » 21 дек 2007, 02:16

Почитал. Вроде хорошо :) Может я просто в теме, поэтому легко понял? Вот у нас бетта-тестер появился - Мур :wink: Мур, посмотришь?
А еще мне кажется, что вначале надо в общем описать, на 1 абзац, что нам надо определиться, параллельны ли отрезки, если не параллельны, то легко найдем, а если параллельны, то они могут как лежать на одной прямой, так и не лежать...
А потом ниже те же шаги подробнее расписать.
Так должно нагляднее быть.
Ну и рисунки добавить вариантов взаимного расположения отрезков - проиллюстрировать ими каждый из подробно описываемых шагов... Я завтра днем нарисую.
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Re: Энциклопедия по робототехнике - Поиск пути на карте (обсужд.

Сообщение =DeaD= » 21 дек 2007, 08:17

Digit писал(а):А еще мне кажется, что вначале надо в общем описать, на 1 абзац, что нам надо определиться, параллельны ли отрезки, если не параллельны, то легко найдем, а если параллельны, то они могут как лежать на одной прямой, так и не лежать...
А потом ниже те же шаги подробнее расписать.
Так должно нагляднее быть.

Fixed.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Энциклопедия по робототехнике - Поиск пути на карте (обсужд.

Сообщение Digit » 21 дек 2007, 11:03

:crazy: Слухай, такая мысль... Когда отрезки лежат на одной прямой, это значит, что их (A,B,C)=getLineCoefsFromTwoPoints(xa,ya,xb,yb) одинаковы, так? Или я гоню? Зачем искать D'=A1*C2-A2*C1<>0
И второе. Найти отрезок, по которому они пересекаются - это проверить взаимное расположение точек концов отрезков. А эту задачу мы выше уже решили: [[Прикладная геометрия#Принадлежность точки отрезку]]. Так ведь? Может так и писать (туда и слать)?
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Re: Энциклопедия по робототехнике - Поиск пути на карте (обсужд.

Сообщение =DeaD= » 21 дек 2007, 11:13

Digit писал(а)::crazy: Слухай, такая мысль... Когда отрезки лежат на одной прямой, это значит, что их (A,B,C)=getLineCoefsFromTwoPoints(xa,ya,xb,yb) одинаковы, так? Или я гоню? Зачем искать D'=A1*C2-A2*C1<>0

Не одинаковы, потому что сказано же выше, что (A,B,C) найденные из разных отрезков на одной и той же прямой будут отличаться на множитель. То есть просто будут пропорциональны, но не равны. Кстати, там еще и D'' надо проверить, ведь A1 может быть равно A2 и равно нулю. Ща добавим.

Digit писал(а):И второе. Найти отрезок, по которому они пересекаются - это проверить взаимное расположение точек концов отрезков. А эту задачу мы выше уже решили: [[Прикладная геометрия#Принадлежность точки отрезку]]. Так ведь? Может так и писать (туда и слать)?

Нет, там мы проверяем принадлежит ли точка отрезку, это мы еще не можем выписать итоговый отрезок по которому пересекаются наши отрезки. Если таким путем пойти, то там дохрена условий еще писать и комбинаций их.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Энциклопедия по робототехнике - Поиск пути на карте (обсужд.

Сообщение Digit » 21 дек 2007, 11:21

про первое. точно гоню :pardon:

про второе.
так вроде того, что берем один отрезок и проверяем две точки другого на принадлежность к отрезку.
Потом наоборот...
Но вообще, канеш, да. Вариантов много... Я чего-то не про все сообразил :)
По-любому получится не упрощение текста, а наоборот.
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Пред.След.

Вернуться в Обо всём

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21