реклама на сайте
подробности

 
 
> Точки пересечения двух окружностей, Формулы в общем виде для процессора
stepserg
сообщение Aug 5 2008, 05:44
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 99
Регистрация: 6-06-07
Пользователь №: 28 237



Задача: Есть две окружности в плоскости.
Радиусы, координаты центров известны.
Необходимо найти точки пересечения этих окружностей
(естественно, если эти окружности пересекаются).

Решить эту задачу на листе бумаги с известными числовыми значениями
радиусов и центров - не проблема. Решается система квадратных уравнений.

Более громоздкая задача получается, когда нужно представить решение в общем виде,
т.е. чтобы по этим формулам можно было вычислять точки пересечения в DSP-процессоре.

Может кто-нибудь это уже проделал?
А может есть численный метод под такую задачу?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
stepserg
сообщение Aug 11 2008, 11:01
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 99
Регистрация: 6-06-07
Пользователь №: 28 237



На самом деле я поторопился.

Система квадратных уравнений в общем виде может и решается, но получаются громоздкие формулы (я даже их не рассматривал).

По условию моей задачи радиусы двух окружностей одинаковые R1=R2=R.

Исходные уравнения:
(x-xc1)^2 + (y-yc1)^2=R
(x-xc2)^2 + (y-yc2)^2=R

где xc1,yc1, xc2, yc2 – координаты центров окружностей.

Алгоритм нахождения точек пересечения двух окружностей таков:

центр одной из окружностей смещается в начало координат и решается простая система уравнений:

x^2 + y^2 = R
(x – A)^2 + y^2 = R

где А – расстояние между центрами окружностей

Т.е. решается упрощенная система квадратных уравнений в системе координат, которая смещена по оси X на xc1 (или xc2), а по оси Y на yc1 (или yc2) , и повернута на некоторый угол ф, относительно исходной системы координат.

Решение упрощенной системы уравнений:
x1’ = A/2; y1’ = + sqrt(R^2 – (А^2/4))
x2’ = A/2; y2’ = - sqrt(R^2 – (А^2/4))

Затем переводим решение в исходную систему координат по формулам:

Если система координат была повернута на положительный угол ф (против хода часов):
x = a + x’*cosф – y’*sinф
y = b + x’*sinф + y’*cosф

Если система координат была повернута на отрицательный угол ф (по ходу часам):
x = a + x’*cosф + y’*sinф
y = b - x’*sinф + y’*cosф

где:
a = xc1, b = yc1 или a = xc2, b = yc2
А = sqrt(dx^2 + dy^2)
sinф = dy/A
cosф = dx/A
dx = abs(xc1 – xc2)
dy = abs(yc1 – yc2)

Решение такой простецкой задачи может понадобиться, например, при реализации на процессоре алгоритмов круговой интерполяции в станках с ЧПУ (перемещение фрезы по дуге - команды G02 и G03) . В результате находятся координаты центра радиуса, по которому нужно перемещаться из исходной точки (xc1,yc1) в конечную (xc2,yc2).
Go to the top of the page
 
+Quote Post



Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 04:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01383 секунд с 7
ELECTRONIX ©2004-2016