Labview portal - перегляд теми - побудова дотичної до кола з точки

Всім привіт!
Завдання - побудувати довільну окружність (дано x1, y1, r1), і з довільної точки (дано x2, y2) провести дотичну до цього кола.
Знайшов таку теорію:

Шлях вирішення може бути приблизно таким (див. Рис.)
Дано: центр окружності x0, y0, радіус R і точка з координатами a, b в довільному місці.
Знайдемо кут альфа як arctg ((b-y0) / (a-x0))
Далі знайдемо кут бета як arccos (R / Sqrt ((a-x0) ^ 2 + (b-y0) ^ 2))
Тепер Знайдемо кут гамма як 2п - альфа - бета
І нарешті, знаходимо точку x1, y1 ось так: x1 = x0-R * cos (гамма) і y1 = y0 + R * sin (гамма)
Коли точка x1, y1 знайдена, застосовуємо формулу для дотичній через точку на колі ..


Зробив таку прогу:


Але, як видно, дотична будується правильно, якщо тільки координата Х точки менше ніж координата Х центру кола, а якщо більше - дотична зміщена.
Ніяк не збагну, в чому помилка. Рішення напевно десь на поверхні

madman писал (а): Ніяк не збагну, в чому помилка. Рішення напевно десь на поверхні


Ну. вникати часу немає, але
Дотичних має бути дві

А помилка може виникати через тригонометричних функцій, точніше це не помилка функцій, а Ваша


Наприклад функції sin і cos періодичні, а відповідно одне й теж значення функції sin (x) буде при різних значеннях x. Обчислюючи зворотну функцію arcsin [sin (x)]. не факт, що вийде вірну відповідь.

Ніколи цим не цікавився, але по хорошому. Повинні отримати масив точок, з яких перевіркою "на дотичність" вибрати правильні.

Я звичайно можу помилятися, але сподіваюся що мене поправлять.

Знання декількох принципів звільняє від знання багатьох фактів!