![]() |
|
![]() ![]() ![]() |
|
TDM |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.2.2006 Где: SPB Репутация: нет Всего: нет |
Даны координаты трёх точек (с1,с2,с3) Узнать угол между ними в градусах. Подскажите как.
|
|||
|
||||
Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 1 Всего: 10 |
Можно поиграться с формулой теоремы косинусов:
A^2=B^2+C^2-2*A*B*Cos(Alfa) -------------------- Пролетал мимо. |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
переделываем это в два вектора: c2c1 и c2c3
находим их длины (корень из суммы квадратов) находим векторное произведение делим на длины векторов получаем синус угла... -------------------- qqq |
|||
|
||||
Magister Y0da |
|
|||
![]() Зелёненький ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 30.11.2004 Репутация: 2 Всего: 2 |
Можно обыкновенные координаты перевести в полярные и все
--------------------
|
|||
|
||||
SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Можно поизвращаться с уравнениями прямых. Извлечь оттуда тангенсы угла наклона, и из большего вычесть меньший угол.
Но лучше делать так, как предложил maxim1000. 2JIAMEP, глупо. С уравнениями прямых и то легче. С сисетмами координат будешь возиться долго. И еще: так можно было бы решать. если бы вершина угла была в нуле. А так она где угодно. И поэтому задачу так не решить. -------------------- Всем добра ![]() |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
если уж сравнивать, то мне кажется, что для углов, близких к 0 и 180 стоит использовать векторное произведение, а для близких к 90 - скалярное (т.е. через теорему косинусов)
причина - точность: в первом случае arcsin точнее, а во втором - arccos общее правило может быть таким: берём любой из двух методов, определяем угол, если он получился из "чужой" области применения - берём другой метод -------------------- qqq |
|||
|
||||
6TITLIZ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 17.1.2006 Где: Сургут Репутация: нет Всего: нет |
S - площадь AB CA - стороны Почему у меня не правильно определяется градус тупого угла? С острыми и прямыми проблем нет |
|||
|
||||
poor_yorik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 12.1.2005 Где: Общаги г. Киева Репутация: 3 Всего: 8 |
Потому что арксинус не работает с тупыми углами, вместо этого у тебя будет отрицательный угол, и тебе над будет прибавить к нему 180 градусов.
--------------------
Семь раз отмерь, один раз - откомпиль.... Семь раз отпей, один раз - отлей... Семь раз отъешь, один раз - не жадничай и другим дай... |
|||
|
||||
6TITLIZ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 17.1.2006 Где: Сургут Репутация: нет Всего: нет |
poor_yorik, Как быть?
![]() ![]() |
|||
|
||||
TDM |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.2.2006 Где: SPB Репутация: нет Всего: нет |
Наверное так:
|
|||
|
||||
6TITLIZ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 17.1.2006 Где: Сургут Репутация: нет Всего: нет |
Он мне выдает Al=36 (пример) А нужно 180-36. Угол тупой, а он выдаёт как острый.
Тут проверкой дело не спасёшь... |
|||
|
||||
TDM |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 1.2.2006 Где: SPB Репутация: нет Всего: нет |
Напишите пример.
|
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 7 Всего: 183 |
Нужно свычислять и синус, и косинус (т.е. пропорциональные им величины), и определять угол с учетом знака обоих. Не знаю как в Паскале, а в С есть ф-я atan2, которая это умеет.
Т.е. получается что-то вроде
-------------------- ... |
|||
|
||||
Magister Y0da |
|
|||
![]() Зелёненький ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 30.11.2004 Репутация: 2 Всего: 2 |
Скажим С2 соединяется с обеими точками.
Тогда С1(С1(Х1)-C2(X2),С1(Y1)-C2(Y2)), С3(С3(Х3)-C2(X2),С3(Y3)-C2(Y2)) и переводим в полярные зайди туда, там есть формула http://www.ssga.ru/AllMetodMaterial/metod_...ina/1_AG.html#2 поиск через rambler "нахождения угла" вторая ссылка Это сообщение отредактировал(а) JIAMEP - 31.5.2006, 14:08 --------------------
|
|||
|
||||
6TITLIZ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 17.1.2006 Где: Сургут Репутация: нет Всего: нет |
А можно как нибудь заранее определить: тупой или острый угол?
И вопрос в догонку: Как можно округлить градусную меру до минут? Чтоб можно было выводить 45* 17" |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |