Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Точки пересечения двух окружностей
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
stepserg
Задача: Есть две окружности в плоскости.
Радиусы, координаты центров известны.
Необходимо найти точки пересечения этих окружностей
(естественно, если эти окружности пересекаются).

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

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

Может кто-нибудь это уже проделал?
А может есть численный метод под такую задачу?
rimpocha
Цитата(stepserg @ Aug 5 2008, 12:44) *
Задача: Есть две окружности в плоскости.
Радиусы, координаты центров известны.
Необходимо найти точки пересечения этих окружностей
(естественно, если эти окружности пересекаются).

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

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

Может кто-нибудь это уже проделал?
А может есть численный метод под такую задачу?


Это шутка да? smile.gif

Решал такие задачи в восьмом классе. К сожалению материалы не сохранились sad.gif
shf_05
кто не дает решить кв уравнение на проце?
Doka
перенес тему, как не имеющую прямого отношения к ЦОС, к начинающим
Tanya
Цитата(stepserg @ Aug 5 2008, 09:44) *
Задача: Есть две окружности в плоскости.
Радиусы, координаты центров известны.
Необходимо найти точки пересечения этих окружностей
(естественно, если эти окружности пересекаются).

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

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

Может кто-нибудь это уже проделал?
А может есть численный метод под такую задачу?

Квадратное уравнение, говорите... Рассмотрим случай, когда центр второй окружности лежит вне первой...
Сведем преобразованием координат (для простоты) центры на ось x, так, чтобы центр первой окружности радиуса R был в точке (0, 0), тогда центр второй с радиусом r будет в известной точке (A, 0)...
Напишем для точек пересечения...
x*x+y*y = R*R
(A-x)^2 + y*y= r*r
вычтем из первого уравнения второе...
Получим:
(2x-A)*A=(R-r)(R+r)
Дальше просто?
stepserg
Это не шутка.
На то он и форум, чтобы обмениваться.
Вдруг уже есть.
Зачем велик изобретать?
И не так все это просто. Нужно выводить.
Летом мозги отказывают smile.gif
На проце квадратных уравнений еще не решал. Вот и стопорюсь.
stepserg
На самом деле я поторопился.

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

По условию моей задачи радиусы двух окружностей одинаковые 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).
Herz
И для DSP это сложная задача?
Kobrinas
stepserg, позволь нескромный вопрос: сколько классов ты закончил?
Тупой американский студент, никогда нормально не изучавший математику, и тот знает, что твою систему квадратных уравнений можно написать в Mathcad и попросить решить в символьном виде. И вписать готовые формулы в программу, если недосуг их на листке бумаги за полминуты вывести.
Herz
Цитата(Kobrinas @ Aug 13 2008, 21:07) *
stepserg, позволь нескромный вопрос: сколько классов ты закончил?
Тупой американский студент, никогда нормально не изучавший математику, и тот знает, что твою систему квадратных уравнений можно написать в Mathcad и попросить решить в символьном виде. И вписать готовые формулы в программу, если недосуг их на листке бумаги за полминуты вывести.

Не надо наговаривать на американских студентов... Математику они знают не хуже нас с Вами. А тупых везде хватает...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.