Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.59.182.74] |
|
Сообщ.
#1
,
|
|
|
Добрый вечер!
Помогите мне пожалуйста со следующей задачей. Дано 3 точки с координатами A(x1,y1), B(x2,y2), C(x3,y3) Нужно найти координаты точки D(x4,y4), которая лежит на прямой AB и удалена от точки С на 10. Длинну отрезка мы можем выразить через координаты: (x3-x4)^2 + (y3-y4)^2 = 100 Уравнение прямой - Ax4 + By4 + C = 0 Пытался подставить одно выражение в другое: (x3-x4)^2 = 100 - (y3-y4)^2 x3-x4 = sqrt(100 - (y3-y4)^2) x4 = x3 - sqrt(100 - (y3-y4)^2) A(x3 - sqrt(100 - (y3-y4)^2)) + By4 + C = 0 А дальше не получается извлечь y4 из этого выражения. Помогите пожалуйста. Прикреплённая картинка
|
Сообщ.
#2
,
|
|
|
AD x AB = 0 //косое (векторное) произведение нулевое, если данные векторы параллельны, т.е. D лежит на AB
в координатах: (x4-x1)*(y2-y1) - (y4-y1)*(x2-x1)=0 (x3-x4)^2 + (y3-y4)^2 = 100 //это твое уравнение для расстояния получается система из двух уравнений первого и второго порядка с двумя неизвестными, имеет от нуля до двух решений. Нужно раскрыть скобки (корней не извлекая!) и решить (выразить x4 из первого, подставить во второе, решить полученное квадратное уравнение относительно y4). Развесистые выражения получатся, конечно. Вот что онлайн-Matematica выдаёт: http://www.wolframalpha.com/input/?i=solve...3D100+for+x%2Cy |
Сообщ.
#3
,
|
|
|
Цитата MBo @ Развесистые выражения получатся, конечно Можно решить геометрически без "развесистых" выражений: //1) вычисляем вспом.параметры отрезка AB L = sqrt((x2-x1)^2+(y2-y1)^2); //длина AB SinAB = (y2-y1)/L; //sin угла наклона AB CosAB = (x2-x1)/L; //cos угла наклона AB //2) находим координаты т.C в системе координат луча AB (центр в т.А, ось абцисс - по лучу AB) u = SinAB*(y3-y1)+CosAB*(x3-x1); //вдоль AB (от А до проекции С на AB) v = SinAB*(x3-x1)-CosAB*(y3-y1); //поперек AB (по перпендикуляру от C к AB) //3) находим координаты искомой точки D на расстоянии 10 от С if abs(v) <= 10 then //если расстояние от С до AB не более заданного { uCD = sqrt(10^2-v^2); //длина проекции отрезка CD на AB x4 = x1 + (u ± uCD)*CosAB; //при uCD=0 одно решение, иначе - два y4 = y1 + (u ± uCD)*SinAB; } else ... //решений нет |