Тема: Точка касательной
Помогите решить задачу: Дана точка (х1,у1) и окружность (х0,у0,R0). Найти координаты точки (x2,y2), чтобы прямая (х1,у1,х2,у2) была б касательной к даной окружности.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
MAXimal :: φορυμ » Problems » Точка касательной
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Помогите решить задачу: Дана точка (х1,у1) и окружность (х0,у0,R0). Найти координаты точки (x2,y2), чтобы прямая (х1,у1,х2,у2) была б касательной к даной окружности.
Вроде самый "тупой" способ это что,будем искать (x2,y2) такую что она уже лежит на окружности.
Так как "Касательная к окружности перпендикулярна к радиусу, проведённому в точку касания",то по теореме Пифагора находим (расстояние R2 от (x1,y1) до (x2,y2),две другие стороны нам известны).
Теперь построим окружность (x1,y1,R2). Точки пересечения этой окружности и (x0,y0,R) и будут искомыми,можно выбирать любую (а так же любую точку на прямой касательной).
А как пересечь окружности и найти точки пересечения есть на этом сайте.
Видимо, поточней и попроще будет идти напрямик, без пересечения окружностей. Кажется, можно так: тоже рассмотрим этот прямоугольный треугольник, пусть AOB (A - заданная нам точка, O - центр окружности, B - искомая). Тогда мы можем найти угол AOB (потому что мы знаем его косинус: cos=OB/OA=R/OA), теперь надо просто взять вектор OA, пронормировать до длины R=OB, и повернуть в обе возможные стороны на угол AOB. Поскольку для поворота достаточно знать синус и косинус угла, то даже не понадобится явно восстанавливать угол AOB (по cos найдём и синус). Итого очень простой код и всего два корня, что неплохо по точности.
Если я, конечно, не ошибся пока придумывал
Да,это я тоже видел,но я не умею нормировать у меня голова кружиться
Ну "нормировать по длине" - это всего лишь разделить обе координаты на старую длину и умножить на новую
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
MAXimal :: φορυμ » Problems » Точка касательной