#math #geometry #points
#математика #геометрия #Очки
Вопрос:
Я знаю угол в точке A и что окружность проходит через точку A и точку B. Должно быть уникальное решение, которое дает мне центр окружности (C) и радиус (R) из этой информации. Я попытался найти формулу следующим образом.
R^2 = (Bx - Cx)^2 (By - Cy)^2
Cx = Ax - R*dy
Cy = Ay R*dx
(dx, dy) — единичный вектор для касательной к окружности в точке A, который можно найти по углу в точке A с помощью sin, cos. Центр окружности находится на расстоянии R от точки A в направлении, перпендикулярном (dx, dy).
Объединение этого дает мне
R^2 = (Bx - Ax R*dy)^2 (By - Ay - R*dx)^2
Умножение этого дает мне квадратичное значение для R, но знаменатель квадратичного значения (часть / 2a) равен
dx^2 dy^2 - 1
Поскольку (dx, dy) является единичным вектором, знаменатель всегда равен 0, и я получаю деление на нулевую ошибку. Где я ошибся?
Комментарии:
1. «Я знаю угол в точке А»? Как насчет угла? Неясно. -1.
2. пожалуйста, добавьте рисунок — если это угол линии, соединяющей точку A с центром, между двумя точками вдоль этой линии проходят бесконечные окружности — на изображении A и B — это точка, альфа — возможная интерпретация угла к A, а c — c ‘ — две окружностицентры, которые удовлетворяют всем условиям, но описывают разные окружности tinypic.com/r/9lj3ps/8
3. Вы имеете в виду угол между отрезком AB и касательной к окружности в точке A?
4. Глядя на уравнение для центра, пользователь имеет в виду угол касательной.
Ответ №1:
Формулировка мне кажется хорошей. Давайте расширим выражение
R^2 = (Bx - Ax R dy)^2 (By - Ay - R dx)^2
это дает
R^2 = Bx^2 Ax^2 R^2 dy^2 2 Bx R dy - 2 Ax Bx - 2 Ax R dy
By^2 Ay^2 R^2 dx^2 - 2 By R dx - 2 Ay By 2 Ay R dx
Переставить
(1 - dx^2 - dy^2) R^2 2 (Ax dy - Ay dx - Bx dy By dx) R 2 (Ax Bx Ay By) = 0
Вы правы в том, что если (dx, dy) является единичным вектором, то член R ^ 2 обращается в нуль. Это не проблема, это просто означает, что вам нужно решить линейное уравнение.
2 (Ax dy - Ay dx - Bx dy By dx) R 2 (Ax Bx Ay By) = 0
что легко решить
R = - (Ax Bx Ay By) / (Ax dy - Ay dx - Bx dy By dx)
Все немного проще, если вы позволите U = (u, v) = (Bx-Ax, By-Ay) быть вектором от A до B, наше уравнение становится
R^2 = (u R dy)^2 (v - R dx)^2
= u^2 2 u dy R dy^2 R^2 v^2 - 2 v dx R dx^2 R^2
Переставить
(1-dx^2-dy^2) R^2 2 (v dx - u dy) R - u^2 - v^2 = 0
Пусть T = (dx, dy) будет касательной, а N = (dy, -dx) является нормальным. Если они имеют единичную длину, это упрощает
2 (N . U) R - U . U = 0
предоставление
R = (U . U)/ 2 (N . U)
Комментарии:
1. Большое спасибо. Я чувствую себя глупо, не понимая, что член R ^ 2 обращается в нуль. Если бы я написал это вместо того, чтобы пытаться сэкономить время, используя символический математический инструмент, тогда я, вероятно, понял бы. Я не ожидал, что это так сильно упростится. Окончательное решение невероятно простое. Вот некоторый код Matlab, который я написал, чтобы проверить это. p1 = [2 2]; p2 = [5 5]; угол = 20; d = [sind (угол) cosd (угол)]; n = [d (2) -d (1)]; pd = p2 -p1; r = (pd * pd’) / (2 * (n * pd’)); c = p1 r *[d(2) -d(1)]; график([p1(1) p2(1)], [p1(2) p2(2)], ‘r.’) удерживайте прямоугольник (‘Положение’, [c-r 2 * r 2 * r], ‘Кривизна’, [1 1]) ось, равная
2. Я уверен, что есть геометрическое объяснение окончательной формулы.
Ответ №2:
Предполагая, что вы имеете в виду угол между линией AB и касательной линией. l, окружности в:
Ключ в том, чтобы провести перпендикулярную биссектрису AB и прямую, перпендикулярную l, через A и найти пересечение. Это будет центр вашего круга.
Ответ №3:
Я решил это из своей теории. Наклон окружности — это радиус, равный 1.
Поэтому: the slope=(rise^2 run^2)^(1/2)=1
, so dy^2 dx^2=1^2
и (dy^2 dx^2)^(1/2)=1
.