24.02.2009, 11:51
общий
это ответ
Здравствуйте, Pandroid!
Пусть (x2, y2) - координаты второй точки.
Если угол [$945$] равен 90[$186$] или 180[$186$], то решение тривиальное: x2 = x1, y2 = y1 [$177$] r.
Пусть [$945$] [$8800$] 90[$186$] + n*180[$186$], n=0,1 (т.е. у нас не вертикальная прямая)
Известно, что уравнение прямой, проходящей через две точки имеет вид:
(y - y1)/(y2 - y1) = (x - x1)/(x2 - x1)
Преобразуем его к виду y=k*x+c:
y = y1 + x * ((y2 - y1) / (x2 - x1)) - x1 / (x2 - x1)
Известно, что коэффициент k = tg([$945$]), тогда
(y2 - y1) / (x2 - x1) = tg([$945$]) (I)
Далее, рассмотрим квадрат расстояния между двумя точками, который по теореме Пифагора равен:
r2 = (y2 - y1)2 + (x2 - x1)2
Т.к. мы рассматриваем случай [$945$] [$8800$] 90[$186$], то x2 [$8800$] x1, тогда разделив на (x2 - x1)2, получим:
r2 / (x2 - x1)2 = ((y2 - y1) / (x2 - x1))2 + 1
А тогда, по (I):
r2 / (x2 - x1)2 = tg2([$945$]) + 1 = 1 / Cos2([$945$])
Отсюда (x2 - x1)2 = r2 * Cos2([$945$])
И x2 = x1 [$177$] r * Cos([$945$])
Подставляя в (I), получим:
y2 = y1 [$177$] r * Sin([$945$])
Т.о. мы нашли две точки. Знак в выражениях определяется значением угла (в каком он квадранте).
Например, если 0 [$8804$] [$945$] < 90[$186$], то имеем две точки:
(x1 + r * Cos([$945$]), y1 + r * Sin([$945$])) и
(x1 - r * Cos([$945$]), y1 - r * Sin([$945$]))
PS Это очень легко представить графически: откладываем точки на расстоянии r по прямой по обе стороны от первой точки
Удачи!
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен