Форум программистов, компьютерный форум, киберфорум
Геометрия
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/47: Рейтинг темы: голосов - 47, средняя оценка - 4.91
19 / 17 / 6
Регистрация: 09.01.2014
Сообщений: 351

Вычислить координаты третьей вершины треугольника по длине основания и прилежащим углам

12.11.2017, 03:50. Показов 10342. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Исходные данные:
Есть система координат xoy. В этой системе координат абсолютно произвольным образом ставят 3 точки (A,В,C). Эти точки образуют треугольник. Известна длина основания AB этого треугольника, а также можно рассчитать градусные меры прилежащих углов.
Кликните здесь для просмотра всего текста
Изначально взаимное положение точек определяется пеленгами (углами, отложенными до необходимой прямой строго по часовой стрелке от вертикальной линии, опущенной в точку) (см. рис. 2)

Необходимо вывести формулу, позволяющую однозначно установить координаты точки С в системе хоу для любого возможного положения точек А,В и С (рис. 3).

Треугольник я решаю(нахожу все стороны и углы) по теореме синусов и никаких проблем не возникает, но когда дело доходит до получения координаты - я никак не могу найти универсальный подход. Самое лучшее к чему я пришел - ввод новой СК, сонаправленной с исходной СК, но повернутой на некоторый угол, но такой подход не подходит для всех возможных случаев.
Еще пробовал составить 2 уравнения длины стороны треугольника и решить систему (см. ниже) - маткад сказал " слишком длинный символьный результат", а для меня очень критично именно получить формулу.
https://www.cyberforum.ru/cgi-bin/latex.cgi?b = \sqrt{{(xc-xa)}^{2}+{(yc-ya)}^{2}}\\c = \sqrt{{(xc-xb)}^{2}+{(yc-yb)}^{2}}

Подскажите пожалуйста - есть какой-нибудь простой способ?

Спасибо.
Миниатюры
Вычислить координаты третьей вершины треугольника по длине основания и прилежащим углам   Вычислить координаты третьей вершины треугольника по длине основания и прилежащим углам   Вычислить координаты третьей вершины треугольника по длине основания и прилежащим углам  

0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.11.2017, 03:50
Ответы с готовыми решениями:

Процедура нахождения по заданным длине стороны треугольника и прилежащим углам длин остальных сторон
Описать процедуру нахождения по заданной длине стороны треугольника и величинам двух прилежащих углов длин остальных сторон треугольника и...

Как найти координаты третьей вершины треугольника, зная все стороны и две вершины?
Добрый день, подскажите как найти координаты третьей вершины треугольника? Известны координаты точек А(x1,y1), С(x2,y2). длины сторон...

Вычислить площадь S треугольника по одной стороне "а" и прилежащим к ней углам
Вычислить площадь S треугольника по одной стороне "а" и прилежащим к ней углам "альфа" и "бета", при этом углы можно...

11
Эксперт по математике/физике
11074 / 7375 / 3990
Регистрация: 14.01.2014
Сообщений: 16,811
12.11.2017, 09:11
Если задан сам треугольник, но нет никакой привязки к системе координат, то он может может быть расположен как угодно в ней. В начале условия стоит вообще несуразица - произвольным образом в этой системе координат ставят три точки??? Если они задаются, то все координаты известны! Наверно задаются координаты точек А и В, а также углы треугольника, которые определяют положение точки С.

Добавлено через 9 минут
Что касается системы уравнения, то все понятно. У Вас два уравнения (почему-то не добавили уравнение для стороны https://www.cyberforum.ru/cgi-bin/latex.cgi?a) и шесть неизвестных! Поэтому Mathcad и не может решить её! Число уравнений должно равняться числу неизвестных (хотя бывают исключения).
2
33 / 31 / 4
Регистрация: 10.07.2014
Сообщений: 741
12.11.2017, 09:17
1)Находим c и b. по теореме синусов.
2)Далее решаем вашу систему уравнений.
Вычитаем первое уравнение из второго и выражаем y через x.
Дальше подставляем в одно из уравнений и решаем квадратное уравнение.
1
19 / 17 / 6
Регистрация: 09.01.2014
Сообщений: 351
12.11.2017, 11:34  [ТС]
Спасибо.
1. Условие действительно не совсем внятно объяснил. Вот грамотная формулировка:
Кликните здесь для просмотра всего текста
задаются координаты точек А и В, а также углы треугольника, которые определяют положение точки С.

2.Проблема состоит в том, что решение в символьном виде ОГРОМНОЕ(даже матлаб при символьном решении пишет "я решил систему, но результат огромный - что-то не так.")
Собственно в этом проблема и заключается.
3. mathidiot, неизвестных всего 2 (xc,yc) - координаты точки С. Все остальное находится по теореме синусов.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
12.11.2017, 12:37
Странная задачка. Изначальная цель что? Для чего это?
Похоже вы хотите произвольно повернуть и сдвинуть заданный треугольник.

Так задайте его без трансформаций относительно начала координат.
Применить матрицу поворота (поворот каждой вершины на угол).
Применить матрицу переноса(к каждой вершине прибавить вектор).
1
33 / 31 / 4
Регистрация: 10.07.2014
Сообщений: 741
12.11.2017, 12:47
Попробуйте вручную решить систему уравнений. И вы получите готовую формулу.
1
Эксперт по математике/физике
 Аватар для jogano
6360 / 4067 / 1512
Регистрация: 09.10.2009
Сообщений: 7,550
Записей в блоге: 4
12.11.2017, 13:12
Ofdeath, всё матлаб делает, только надо условие формулировать внятно. Вот эти приписка важная:
Цитата Сообщение от Ofdeath Посмотреть сообщение
Изначально взаимное положение точек определяется пеленгами (углами, отложенными до необходимой прямой строго по часовой стрелке от вертикальной линии, опущенной в точку) (см. рис. 2)
Для точек А(-3;2), В(4;-1) и азимутов из А 40 градусов и из В 330 градусов результат - на рис.1
Для тех точек А и В и азимутов 150 градусов и 330 градусов точки С нет (лучи расходятся), тогда выдаётся текствое сообщение и строятся два расходящихся луча, при этом функция выдаёт координаты С как (0;0) (так как С - исходящий результат функции, то мы должны установить какие-то координаты для этой точки) - рис.2.
Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
function [C] = KoordinatojClauxABPaPb(A,B,Pa,Pb)
%KOORDINATOJCLAUXABPAPB Функция вычисляет и рисует координаты вершины С
%треугольника АВС по координатам точек А, В на плоскости и двум азимутам Pa
%и Pb точки С от двух вершин А и B (азимуты отсчитываются как в геодезии -
%от направления OY+ по часовой стрелке в градусах)
figure1 = figure('PaperUnits','centimeters',...
                 'PaperSize',[20 20],...
                 'Color',[1 1 1]);
axes('Parent',figure1,...
     'FontName','Courier New',...
     'Position',[0.1 0.1 0.8 0.8],...     
     'Visible','on');
grid on;
hold('all');
axis equal; % устанавливаются равные величины единичных отрезков по обоим осям
Pa_rad=Pa/180*pi; Pb_rad=Pb/180*pi;
U=(1/sin(Pb_rad-Pa_rad))*[-cos(Pb_rad) sin(Pb_rad); -cos(Pa_rad) sin(Pa_rad)]*(B-A)';
if U(1)<0 || U(2)<0
    msgbox('Лучи с такими азимутами расходятся, точки С не существует');
    C1=A+norm(B-A)/2*[sin(Pa_rad) cos(Pa_rad)]; C2=B+norm(B-A)/2*[sin(Pb_rad) cos(Pb_rad)];
    line([A(1) C1(1)],[A(2) C1(2)],'Color','b','LineWidth',1,'Marker','none','MarkerSize',3, 'MarkerFaceColor','y');
    line([B(1) C2(1)],[B(2) C2(2)], 'Color','b','LineWidth',1,'Marker','none','MarkerSize',3, 'MarkerFaceColor','y');
    text(1.05*A(1)-0.05*B(1),1.05*A(2)-0.025*B(2),'A','HorizontalAlignment','Left','VerticalAlignment','Top',...
       'FontName','Arial',...
       'fontsize',14,...
       'fontweight','b',...
       'BackgroundColor','none');
    text(1.05*B(1)-0.05*A(1),1.05*B(2)-0.025*A(2),'B','HorizontalAlignment','Center','VerticalAlignment','Middle',...
       'FontName','Arial',...
       'fontsize',14,...
       'fontweight','b',...
       'BackgroundColor','none');
    C=[0 0];
else
    C=A+U(1)*[sin(Pa_rad) cos(Pa_rad)];    
    line([A(1) C(1)],[A(2) C(2)],'Color','b','LineWidth',1,'Marker','o','MarkerSize',3, 'MarkerFaceColor','y');
    line([B(1) C(1)],[B(2) C(2)], 'Color','b','LineWidth',1,'Marker','o','MarkerSize',3, 'MarkerFaceColor','y');
    text(1.05*C(1)-0.025*A(1)-0.025*B(1),1.05*C(2)-0.025*A(2)-0.025*B(2),'C','HorizontalAlignment','Center','VerticalAlignment','Middle',...
       'FontName','Arial',...
       'fontsize',14,...
       'fontweight','b',...
       'BackgroundColor','none');
    text(1.05*A(1)-0.025*B(1)-0.025*C(1),1.05*A(2)-0.025*B(2)-0.025*C(2),'A','HorizontalAlignment','Left','VerticalAlignment','Top',...
       'FontName','Arial',...
       'fontsize',14,...
       'fontweight','b',...
       'BackgroundColor','none');
    text(1.05*B(1)-0.025*A(1)-0.025*C(1),1.05*B(2)-0.025*A(2)-0.025*C(2),'B','HorizontalAlignment','Center','VerticalAlignment','Middle',...
       'FontName','Arial',...
       'fontsize',14,...
       'fontweight','b',...
       'BackgroundColor','none');
end;
line([A(1) B(1)],[A(2) B(2)],'Color','r','LineWidth',2,'Marker','o','MarkerSize',3, 'MarkerFaceColor','y');
end

Вызовы функции:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
>> [C] = KoordinatojClauxABPaPb([-3 2],[4 -1],40,330)
 
C =
 
    0.1207    5.7191
 
>> [C] = KoordinatojClauxABPaPb([-3 2],[4 -1],150,330)
 
C =
 
     0     0
Миниатюры
Вычислить координаты третьей вершины треугольника по длине основания и прилежащим углам   Вычислить координаты третьей вершины треугольника по длине основания и прилежащим углам  
1
19 / 17 / 6
Регистрация: 09.01.2014
Сообщений: 351
12.11.2017, 14:06  [ТС]
Сама задача - некоторое подобие триангуляции. Цель - зная координаты двух объектов-наблюдателей(А и В) и их пеленги на объект наблюдения(Па и Пв) определить координаты объекта наблюдения(С).
Я в конце концов просто подошел с другой стороны, составил такую систему:
yc-ya=tan(pi/2 - Па)*(xc-xa);
yc-yb=tan(pi/2 - Пb)*(xc-xb);
и решил ее. Вроде бы она подходит для всех случаев, кроме случая когда А В и С лежат на одной прямой.
0
Эксперт по математике/физике
 Аватар для jogano
6360 / 4067 / 1512
Регистрация: 09.10.2009
Сообщений: 7,550
Записей в блоге: 4
12.11.2017, 15:01
Для точек поста #7 и азимутов 340 градусов и 30 градусов ваша система выдаёт результат С(0,3763; -7,2764). А на самом деле точки С не существует - оба луча направлены вверх и расходятся, а точка (0,3763; -7,2764) есть пересечение продолжений этих лучей, а не самих лучей. Это происходит потому, что по тангенсу угол на круге однозначно не определяется, а с точностью до 180 градусов. Но если снятие азимутов происходит корректно, тогда да, ваша формула подходит.
0
19 / 17 / 6
Регистрация: 09.01.2014
Сообщений: 351
12.11.2017, 15:35  [ТС]
А разве не получится так, что в посте #9 азимуты изначально заданы таким образом, чтобы не существовало точек пересечения? То есть на практике такое вообще невозможно.
0
Эксперт по математике/физике
 Аватар для jogano
6360 / 4067 / 1512
Регистрация: 09.10.2009
Сообщений: 7,550
Записей в блоге: 4
12.11.2017, 15:47
Цитата Сообщение от Ofdeath Посмотреть сообщение
А разве не получится так, что в посте #9 азимуты изначально заданы таким образом, чтобы не существовало точек пересечения?
Вот я как раз и предположил, что азимуты можно задать любые (правда, не учёл ситуацию, что Па-Пb кратно 180 градусам, и тогда точка С лежит где-то на АВ и координаты её нельзя определить однозначно. Программа в этом случае выдаст ошибку деления на 0 (строка 17 моего кода - деление на sin(Па-Пb) ).
Раз эти две ситуации (расхождение лучей и Па-Пb кратно 180 градусам) не возможны на практике, значит обрабатывать их не нужно и ваша формула отражает истинное положение вещей.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
12.11.2017, 18:13
xC=x(A)+b*sin(alfa)
yC=y(A)+b*cos(alfa)
Название: ScreenShot00959.jpg
Просмотров: 165

Размер: 7.9 Кб
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.11.2017, 18:13
Помогаю со студенческими работами здесь

Найти координаты третьей вершины треугольника
Даны координаты двух вершин треугольника (14;3), (46;27) и точки пересечения высот (33;1). Найти координаты третьей вершины треугольника

Определить координаты третьей вершины треугольника
Прошу помощи в написании формулы определения координат третьей вершины треугольника Правила, 5.18. Запрещено размещать задания в виде...

Найти координаты третьей вершины треугольника
Даны две вершины треугольника A(3;8) B(10;2) и точка пересечения медиан M(1;1). Найти координаты третьей вершины треугольника?! Очень...

Найти координаты третьей вершины треугольника
Нужно вывести формулу для нахождения X и Y точки C, вершины треугольника. Известны координаты точек A и B, и углы AC и BC(соответственно и...

Вычисление медиан треугольника по стороне и прилежащим к ней углам
Подруга попросила помочь, надо сделать ей задачи. Суть самой задачи: Составьте программу вычисления медиан треугольника,длина стороны...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru