Вычисление окружности через 2 известные точки и угол в одной точке

#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 .