|
Точки пересечения двух окружностей, Формулы в общем виде для процессора |
|
|
|
 |
Ответов
(1 - 9)
|
Aug 5 2008, 07:11
|

Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 6-03-07
Из: Новосибирск, Seattle
Пользователь №: 25 935

|
Цитата(stepserg @ Aug 5 2008, 12:44)  Задача: Есть две окружности в плоскости. Радиусы, координаты центров известны. Необходимо найти точки пересечения этих окружностей (естественно, если эти окружности пересекаются).
Решить эту задачу на листе бумаги с известными числовыми значениями радиусов и центров - не проблема. Решается система квадратных уравнений.
Более громоздкая задача получается, когда нужно представить решение в общем виде, т.е. чтобы по этим формулам можно было вычислять точки пересечения в DSP-процессоре.
Может кто-нибудь это уже проделал? А может есть численный метод под такую задачу? Это шутка да?  Решал такие задачи в восьмом классе. К сожалению материалы не сохранились
--------------------
НГТУ, Физико-технический факультет, кафедра Лазерных систем
|
|
|
|
|
Aug 5 2008, 09:00
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(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) Дальше просто?
|
|
|
|
|
Aug 5 2008, 09:03
|

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

|
Это не шутка. На то он и форум, чтобы обмениваться. Вдруг уже есть. Зачем велик изобретать? И не так все это просто. Нужно выводить. Летом мозги отказывают На проце квадратных уравнений еще не решал. Вот и стопорюсь.
|
|
|
|
|
Aug 11 2008, 11:01
|

Частый гость
 
Группа: Свой
Сообщений: 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).
|
|
|
|
|
Aug 13 2008, 19:07
|
Участник

Группа: Новичок
Сообщений: 23
Регистрация: 5-12-07
Пользователь №: 33 015

|
stepserg, позволь нескромный вопрос: сколько классов ты закончил? Тупой американский студент, никогда нормально не изучавший математику, и тот знает, что твою систему квадратных уравнений можно написать в Mathcad и попросить решить в символьном виде. И вписать готовые формулы в программу, если недосуг их на листке бумаги за полминуты вывести.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|