Перейти к содержимому
Compvision.ru
mrgloom

задача с отрезками

Recommended Posts

%D0%BF%D0%B5%D1%80%D0%B5%D1%81%D0%B5%D1%

Есть произвольные точки 1,2,3.

 

Соответственно отрезки 1-2, 2-3.Красным показаны отрезки отстоящие от отрезков 1-2, 2-3 на некоторую дельту, они параллельны оригинальным отрезкам и имеют ту же длину.

 

В итоге надо получить некую "трубу", т.е. соединить отрезки, т.е. найти точки пересечения отрезков, а точнее линий, т.к. например видно что сверху они не пересекаются, а пересекаются только на продолжении.

 

Найти отрезки могу, найти пересечение тоже, вопрос только в том как правильно программно определить пару из 2-х отрезков, т.е. пары отрезков которые сверху и снизу.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я думаю самый простой способ получить эти конуры, отмасштабировать средний контур. 

 

Уменьшить  - получим внутренний контур, увеличить - получим внешний контур.

 

Единственное что надо центр масс совместить с началом координат перед масштабированием, чтобы не уплывала фигура.

 

Подумал еще немного, вроде как не для всех случаев годится.

 

 

А вообще,направления отрезков заданы, значит уравнения прямых можем написать, подставив в уравнение точку получим в результате число.

 

0 - точка на прямой.

>0 - точка с одной стороны

<0 - точка с другой стороны.

 

Берем два смежных осевых отрезка, берем точки с одной стороны (внутренние или внешние) и пересекаем отрезки которым эти точки принадлежат.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Уменьшить  - получим внутренний контур, увеличить - получим внешний контур.

 

Во-первых там получается, что если скейлим, то концевые точки не так в примере получаются.И вопрос как раз как определить внешний и внутренний контур, и относительно чего определяем.

что то я помню в линейной алгебре такое было выше и ниже плоскости(или слева или права от прямой) и это вроде как зависело от тройки векторов(системы отсчёта).

 

 

Берем два смежных осевых отрезка, берем точки с одной стороны (внутренние или внешние) и пересекаем отрезки которым эти точки принадлежат.

 

 

 

не понял. Я как раз и пытаюсь определить какие внутренние, а какие внешние.

т.е. у меня есть ф-ия из отрезка получающая 2 отрезка(внутренний и внешний), но я не знаю какой из них какой, т.е. у меня получается просто список из 2-х, и в зависимости от наклона отрезка либо первый внешний, а второй внутренний либо наоборот.

Т.е. потом чтобы получить точки пересечения я должен взять 2 внутренних и 2 внешних и пересечь.

 

и да я не сказал, но точек в ломанной может быть от 2-х (1 отрезок) до N, но вроде как они не пересекаются и ломанная не замыкается.

 

п.с. может есть какое либо приложение для планиметрии чтобы не в пейнте и не на бумаге это всё делать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Проверил, если скейлить относительно центройда, то потом центройды совпадают, осталось только опредлеть скейл исходя из отступа и правильно пересчитать краевые точки(для чего видимо всё равно придётся понять внутри они или снаружи)

 

 

нашел программу http://www.geogebra.org/

 

https://dl.dropboxusercontent.com/u/8841028/geometry%20tasks/centroid_test.png

сам проект в  geogebra https://dl.dropboxusercontent.com/u/8841028/geometry%20tasks/centroid_test.ggb

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так есть же point_polygon_test  . Им и можно определить что снаружи, а что внутри.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

так это только для закрытых полигонов, а у меня ломанная.

 

Вообщем я решил проблему рассмотрев отдельно 4 варианта направления вектора-отрезка и возвращаю левый и правый отрезок просто в заданном порядке.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

[off]

Geogebra рулит! Очень мне она нравится, использую как замену блокноту и калькулятору, чтобы что-то нарисовать, посчитать и увидеть в реальных масштабах.

[/off]

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для разнообразия посмотрите и это:

http://www.geometryexpressions.com/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У geogebra есть что то типа онлайн блокнотов как в ipython т.е. можно в онлайн это выкладывать и прямо в браузере смотреть и еще она умеет в 3D.

http://tube.geogebra.org/book/title/id/151034#material/98261

 

а вообще я за вечер не разобрался как построить какую либо фигуру с условиями.

 

например как построить отрезок параллельный данному отрезку на заданном расстоянии.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это проще вручную.

Пусть дан отрезок X=[dx,dy] с длиной L, гдe dx=(b1-a1).x ; dy=(b1-a1).y  и a1 и b1 - конечные точки отрезка.

Ищем орт отрезка v1=[dx/L,dy/L] , дальше ищем орт перпендикуляра v2=[-v1.y,v1.x],

Ищем смещение точек vd=v2*delta. ищем точки смещенного отрезка a2=a1+vd, b2=b1+vd. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Посмотрел демку Geometry expressions. Всё таки geogebra для меня удобней. Многие типичные для меня сценарии из неё в Geometry expressions вообще непонятно как реализовать. Например:

1. открываем справа окошко с электронной таблицей (да, примитивные есть в geogebra), вводим начальные данные (константы, координаты и т.п.);

2. там же пишем формулы для вычисления необходимого для решения задачи, оно считается;

3. одновременно с 2 на лист добавляем фигуры, координаты и параметры которых равны ячейкам таблицы.

То есть константы, входные данные, формулы и чертежи являются одним связанным решением, всё автоматически перерисовывается, если я меняю данные или формулу.

 

Также, в Geometry expressions я не нашёл списка элементов, расположенных на чертеже. Где можно скрывать/показывать, удалять, смотреть что и от чего зависит.

 

Короче, общее впечатление о Geometry expressions сложилось как о более глянцевом, но и более примитивном инструменте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну я не очень сильно знаком с Geogebra, обязательно восполню этот пробел, ибо система очень достойная, на первый взгляд, разница между ней и Geometry expressions примерно такая же, как между системой численной математики и системой символьной математики (например MATLAB и Maple).

ЗЫ: Может я просто не нашел в Geogebra символьной геометрии.

 

Картинка - иллюстрация (Задал буковками длину и углы, спросил другую длину, получил символьный ответ):

 

post-1-0-61991200-1415542867_thumb.png

 

post-1-0-42299400-1415544769_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×