Top.Mail.Ru
Ответы
Аватар пользователя
7лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Простите что пишу в раздел (PHP) так как нет раздела vb (А тут самые умные программисты сидят Вопрос по нахождению угла

Ребят не считаю себя программистом (Я быстрее Гавнокодер ) со своими кривыми пальцами (Пожалуйста опустите критику, и помогите с проблемой )

Имеется
Две точки на координате (x1,x2,y1,y2)

X2 и У2 - это центр окружности
Х1 и У1 - это точка которая лежит На окружности

Я честно сказать Устал искать угол Между Этими точками (прибегал к разным методам )
Вот мои примеры

===================================================
Dim x0 As Double
Dim y0 As Double
Dim x1 As Double
Dim y1 As Double
Dim alpha As Double - Угол Который нужно найти
Dim pi As Double
Dim a,b,r As Double - Для нахождения радиуса окружности

pi = 4* Atn(1) - К сожалению в Визуал Бейсике нету Классов Mach (приходится выкручиваться)
alpha = 0

a = Abs( x1 - x0 )
b = Abs(у1 - y0)
r = Sqr((a*a)+(b*b)) - нашли радиус По пифагору

А далее мне нужно найти Угол между точками (относительно цетнтра окружности )
Я пытался несколькими способами - самый лучший результат я получил при поиске по треугольнику (теоремой синусов )

Dim a1,b1,c1 As Double
b1 = r -(Длина x до центра ) это точка которая лежит на окружности в 0 градусов
с1 = Sqr ((a*а) +(b*b)) -(длина по У от центра окружности) до искомой точки
a1 = Sqr ((b1*b1)+(с1*с1)) -А это наша любимая гипотенуза

И так согласно теореме синусов имеем формулу
Угол = arccos( ((b1*b1)+(с1*с1)-(a1*a1)) / 2 * b1 * c1)

Проблема в том что Аркосинусов в vb нет и приходится находить через Артангенс
Аркосинус по Атангенсу находится вот по такой формуле
(из тригонометрии) ArcCos = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)

Dim ArcCos As Double
Dim Arc As Double - Промежуточные вычисления

Arc = ((b1*b1)+(с1*с1)-(a1*a1)) / 2 * b1 * c1)

ArcCos = Atn(-Arc / Sqr(-Arc* Arc + 1)) + 2 * Atn(1)

Далее если Y Точки находится ниже центра У тогда добавляю + 180 градусов
if (y0 - y2 ) < 0 Then
ArcCos = ArcCos + ((180*pi )/180) - Прибавляю в радианах

Хотя я пробовал по разному (прибавлять просто 180 а после уже все переводить в радианы ) так не коректно
находит

===============================================================================

Ребят я знаю что вы умные - подскажите мне какое нибудь решение (более гуманное )
У меня всего известны 2 точки (это центр окружности, и Точка лежащая в этой окружности ) Мне нужно найти угол До этой точки
Но вот как я не стараюсь Угол до 180 находит коректно а после Вообще не понять Что находит !!!

Дополнен

Dim x0 As Double - Центр окружности по Х
Dim y0 As Double - Центр Окружности о У
Dim x1 As Double - Центр точки которую нужно найти угол по Х
Dim y1 As Double - Ну и Точка у

По дате
По рейтингу
Аватар пользователя
Новичок
7лет

Как можно найти угол имея 2 (ДВЕ) точки не подскажет даже Пифагор
По математическому определению:
У́гол — геометрическая фигура, образованная двумя лучами (сторонами угла), выходящими из одной точки (которая называется вершиной угла)

Аватар пользователя
Знаток

Плохо