![]() |
|
|
![]()
|
|
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Задача такая:
Даны четыре точки, которые являются серединами сторон четырехугольника. Надо построить этот 4-х угольник. Как это сделать? Была мысль разбивать на треугольники(их ведь строить без проблемм по серединам сторон) и их строить. Потом выделять стороны. Но я окончательно запутался в линиях. Может есть какая литература на эту тему, или кто уже решал- помогите плз. -------------------- Всем добра |
|||
|
||||
| Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 1 Всего: 10 |
Задача по геометрии. Это решение будет работать только для прямоугольника.
Дано: A1 (X1, Y1) A2 (X2, Y2) A3 (X3, Y3) A4 (X4, Y4) Допустим A1 и А3 противоположные точки. Соответственно А2 и А4 также противоположны. (В принципе можно программно найти, какая точка противоположна. Самая дальняя для данной точки.) Составляем уравнение линий X=(X3-X1)*t+X1 Y=(Y3-Y1)*t+Y1 t изменяется от 0 до 1. Избавляемся от t Y=((Y3-Y1)/(X3-X1))*X+((Y1-Y3)/(X3-X1))*X1+Y3 Нас интересует только коэфицент стояший у X. Свойство уравнений паралейных линий. Этот коэфицент не будет меняться. Будет меняться только свободный член уравнения. Осталось только найти этот свободный член для точек A2 и A4. Тем самым мы найдем уравнения прямых ребер. Аналогично считаем уравнения ребер для другой комбинации. Затем только останется найти точки пересечения этих прямых. -------------------- Пролетал мимо. |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Предположение: Через четыре точки, которые являются серединами сторон четырехугольника можно проложить сколько угодно соответствующих условию 4-х угольников.
Или нужен любой из них? (рисовал на глаз поэтому неточно!) Присоединённый файл ( Кол-во скачиваний: 10 )
chetireh.png 2,77 Kb-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Fin, ты не прав.
cardinal, так вот надо способ для любых 4-х точек. Конечно есть исключения, когда нельзя построить такой 4-х угольник, вот например: Это сообщение отредактировал(а) SoWa - 14.2.2006, 21:25 Присоединённый файл ( Кол-во скачиваний: 11 )
i.JPG 0,94 Kb-------------------- Всем добра |
|||
|
||||
| Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 1 Всего: 10 |
Где именно? SoWa, Тут понимаеш, есть бесконечная куча возможностей построения данного четырехугольника. Должны быть какие либо ограничения еше. Иначе тебе придется писать ну очень большую прогу, чтобы учесть все возможности. Добавлено @ 21:30 Случаи которые ты привел в рисунке, как раз и нужно проверять сразу. -------------------- Пролетал мимо. |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Ох прости. Я подумал, что ты говоришь что только прямоугольник можно построить.
Во вторых- мне не надо программу. Мне надо алгоритм, как это делать. Это задача по мат.моделированию. -------------------- Всем добра |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Нам известны координаты 4 точек - середин сторон. Надо найти координаты других 4 точек - вершин. Т.о. имеем 8 неизвестных (икс и игрек каждой из вершин) и 8 уравнений, их связывающих (координата центра стороны равна ср. арфм. той же координаты вершин этой стороны). Т.е. обычная линейная система из 8 уравнений. Решение которой - более чем тривиальная задача.
В зависимости от исходных условий возможно 1 решение (система определена), беск. мн-во решений (система не определена), нет решения (система несовместна). Теперь объясните, в чем собсно проблема... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 1 Всего: 10 |
Проблема будет в том, что этих решений будет или слишком бесконечно, или вообше не будет. Тебе выбирать, что именно предпочитаеш. -------------------- Пролетал мимо. |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
а т.к. задача просто сводится к линейной, то получается вот что: при некоторых данных задача решения не имеет (а при некоторых - бесконечно много) это автоматически означает, что матрица вырождена и единственного решения получено никогда не будет...
это - да, а вот это: нет сами координаты определяют количество решений -------------------- qqq |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Т.е. вывести систему уравнений и смотреть сколько у нее решений.
Спасибо! Пойду решать! Это сообщение отредактировал(а) SoWa - 15.2.2006, 05:26 -------------------- Всем добра |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Ты невнимательно читал мой пост - это я указал. Какой из трех возможных вариантов будет в каждом конкретном случае - однозначно определяется исходными данными - т.е. заданными координатами точек-центров. При решении системы СЛАУ методом, скажем, Гаусса ненулевой главный определитель означает единственность решения, нулевой при всех частных нулевых - бесконечное множество решений, при хотя бы одном частном ненулевом - отсутствие решения. В случае бесконечного множества решений может возникнуть задача найти хотя бы одно решение, для этого достаточно задать какое-либо случайное значение одной из неизвестных и решать остатнюю систему из 7 уравнений с 7 неизвестными. Если она несовместна - придется поискать другое случайное значение, если опять не определена - можно задать случайное значение следующей переменной. Еще одно - если не задано соответствие того, на каких сторонах лежат заданные точки, то придется составлять и решать 6 аналогичных систем. Причем может статься, что каждая имеет решение... И еще одно - четырехугольник может получиться самопересекающийся или вырожденный. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Это понятно, но ничего страшного. -------------------- Всем добра |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |