Математический форум Math Help Planet
http://mathhelpplanet.com/

Полигон, найти координату точки
http://mathhelpplanet.com/viewtopic.php?f=33&t=21690
Страница 1 из 1

Автор:  nerozero [ 25 янв 2013, 12:07 ]
Заголовок сообщения:  Полигон, найти координату точки

Здравствуйте, пишу в Ваш форум первый раз, посему прошу прощения если нарушил какое нибудь правило.
Есть замкнутый полигон (многоугольник) на плоскости, заданный координатами.
К примеру: 4 точки полигона A(x1,y1) , B(x2,y2), C(x3,y3), D(x4,y4)....
для каждой группы из 3 точек, скажем АBC нужно найти координаты пары точек, P1,P2 (биссектрисы ABC) удаленных от точки B на расстояние d
Из придуманного - найти угол между прямыми AB - OX и BC - OX и высчитать из него a относительноOX. А дальше получить координаты P1 через полученные углы X = x1+dcos( a ), Y = y1+dsin( a ),...

Приводя к общему уравнению прямой (Ax+By+C): (X-X1)(Y2-Y1)=(Y-Y1)(X2-X1) -> A=(Y2-Y1) B=(X1-X2)

Угол между двумя прямыми: [math]cos \varphi = \frac{ A1 \cdot A2+B1 \cdot B2 }{ \sqrt{A1^{2}+B1^{2} } \sqrt{A2^{2} +B2^{2} } }[/math]

Проверяя формулы столкнулся с одинаковым значением fi у двух отрезков: A(2,4), B(5,7), C(8,4)
Угол между AB и OX = 45° и у BC и OX = 45° . В качестве OX беру отрезок с координатами (0,0)(1,0). Что я упускаю?

PS.
Вышку окончил 11 лет назад, прошу по возможности особо не пинать - все позабыл... :oops:

Вложения:
Math.png
Math.png [ 12.07 Кб | Просмотров: 54 ]

Автор:  nerozero [ 25 янв 2013, 23:04 ]
Заголовок сообщения:  Re: Полигон, найти координату точки

Li6-D
Спасибо за ответ, делаю именно так, вот только застопорился на углах. в примере который я привел у двух перпендикулярных друг другу отрезков с осью OX получается один угол.
Координаты прямых A(2,4), B(5,7), C(8,4). Единичный вектор: OX(0,0)(1,0)
Ищем углы с осью и прямойAB и OX, BC и OX
Изображение

подставляем в формулу: [math]cos \varphi = \frac{ A1 \cdot A2+B1 \cdot B2 }{ \sqrt{A1^{2}+B1^{2} } \sqrt{A2^{2} +B2^{2} } }[/math]
И получаем что угол между AB и OX = 45° и угол между BC и OX = 45° ??!?!

Поправьте меня пожалуйста.

Автор:  vvvv [ 26 янв 2013, 04:46 ]
Заголовок сообщения:  Re: Полигон, найти координату точки

Можно по-другому.
По координатам заданных точек образуете вектора, направленные по сторонам многоугольника.Нормируете их.Складываете попарно и получаете вектор, направленный по биссектрисе соответствующего угла.Умножаете найденный вектор на постоянный множитель (чтобы получить нужное расстояние).
Складываете, найденные вектора, с координатами заданных точек-получаете искомое.

Автор:  vvvv [ 26 янв 2013, 11:46 ]
Заголовок сообщения:  Re: Полигон, найти координату точки

Вот пример для первой тройки точек.
Изображение

Автор:  erjoma [ 26 янв 2013, 13:36 ]
Заголовок сообщения:  Re: Полигон, найти координату точки

nerozero писал(а):
Li6-D
Спасибо за ответ, делаю именно так, вот только застопорился на углах. в примере который я привел у двух перпендикулярных друг другу отрезков с осью OX получается один угол.
Координаты прямых A(2,4), B(5,7), C(8,4). Единичный вектор: OX(0,0)(1,0)
Ищем углы с осью и прямойAB и OX, BC и OX
Изображение

подставляем в формулу: [math]cos \varphi = \frac{ A1 \cdot A2+B1 \cdot B2 }{ \sqrt{A1^{2}+B1^{2} } \sqrt{A2^{2} +B2^{2} } }[/math]
И получаем что угол между AB и OX = 45° и угол между BC и OX = 45° ??!?!

Поправьте меня пожалуйста.


Между двумя прямыми существует два угла. Сумма этих углов равна [math]{180^\circ }[/math].Вы нашли острые углы между прямыми AB и OX, BC и OX.

Предложу другой способ нахождения угла.
тангенс угла наклона биссектрисы [math]\tan \alpha = \frac{{\left| {BC} \right|{y_1} + \left| {AB} \right|{y_3} - \left( {\left| {BC} \right| + \left| {AB} \right|} \right){y_2}}}{{\left| {BC} \right|{y_1} + \left| {AB} \right|{y_3} - \left( {\left| {BC} \right| + \left| {AB} \right|} \right){y_2}}}[/math], [math]\alpha \in \left[ {0^\circ ,180^\circ } \right)[/math].
Вычислив [math]\alpha[/math], можно найти координаты точек [math]{P_1}\left( {{x_2} - d\cos \alpha ,{y_2} - d\sin \alpha } \right),{P_2}\left( {{x_2} + d\cos \alpha ,y + d\sin \alpha } \right)[/math]

Автор:  vvvv [ 26 янв 2013, 17:45 ]
Заголовок сообщения:  Re: Полигон, найти координату точки

Когда два отрезка лежат на одной прямой, тогда просто поворачиваем вектор на 90 градусов. :)

Автор:  erjoma [ 26 янв 2013, 17:49 ]
Заголовок сообщения:  Re: Полигон, найти координату точки

erjoma писал(а):
Предложу другой способ нахождения угла.
тангенс угла наклона биссектрисы [math]\tan \alpha = \frac{{\left| {BC} \right|{y_1} + \left| {AB} \right|{y_3} - \left( {\left| {BC} \right| + \left| {AB} \right|} \right){y_2}}}{{\left| {BC} \right|{y_1} + \left| {AB} \right|{y_3} - \left( {\left| {BC} \right| + \left| {AB} \right|} \right){y_2}}}[/math], [math]\alpha \in \left[ {0^\circ ,180^\circ } \right)[/math].
Вычислив [math]\alpha[/math], можно найти координаты точек [math]{P_1}\left( {{x_2} - d\cos \alpha ,{y_2} - d\sin \alpha } \right),{P_2}\left( {{x_2} + d\cos \alpha ,y + d\sin \alpha } \right)[/math]

[math]\tan \alpha = \frac{{\left| {BC} \right|{y_1} + \left| {AB} \right|{y_3} - \left( {\left| {BC} \right| + \left| {AB} \right|} \right){y_2}}}{{\left| {BC} \right|{x_1} + \left| {AB} \right|{x_3} - \left( {\left| {BC} \right| + \left| {AB} \right|} \right){x_2}}}[/math]

Автор:  nerozero [ 26 янв 2013, 18:20 ]
Заголовок сообщения:  Re: Полигон, найти координату точки

Всем большое спасибо!
Решил так, использую вышеупомянутую формулу для нахождения косинуса угла, а дальше в зависимости от значений x2-x1<0 и y2-y1<0 прибавляю/отнимаю Pi, 4 возможных варианта.

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

Изображение

Потребовалось найти координаты центра вписанной в угол окружности. Очевидно что центр окружности будет лежать на той-же биссектрисе. Решение оказалось (как мне пока кажется решением) тривиально простым, найти уравнения пары параллельных прямых для AB и BC удаленных на расстояние r, далее найти координаты их пересечения.

Решение:
Исходя из формулы расстояния (+/- тут указывают на первую либо вторую параллельную прямую):
[math]\pm d= \frac{ Ax+By+C }{ \sqrt{A^{2}+B^{2} } }[/math]

Получим уравнение параллельной прямой удаленной на расстояние r:
[math]Ax+By+C \pm r\sqrt{A^{2}+B^{2} }=0[/math]

Очевидно что изменяется коэффициент C, как собственно и должно быть. Координаты точки пересечения прямых:
[math]X= \frac{ C2B1-C1B2 }{ A1B2-A2B1 }[/math]

[math]Y= \frac{ C2A2-C1A1 }{ A1B2-A2B1 }[/math]

Подставляем:
[math]X= \frac{ (C2 \pm r\sqrt{A2^{2}+B2^{2} })B1 - (C1 \pm r\sqrt{A1^{2}+B1^{2} })B2}{ A1B2 - A2B1 }[/math]

[math]Y= \frac{ (C1 \pm r\sqrt{A1^{2}+B1^{2} })A2 - (C2 \pm r\sqrt{A2^{2}+B2^{2} })A1}{ A1B2 - A2B1 }[/math]

Получаем x1,y1 пр при положительном r и x2,y2 - при отрицательном
Если кому понадобиться ...

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/