Форум: "Прочее";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
ВнизТангента к двум окружностям Найти похожие ветки
← →
Галинка © (2007-07-16 18:08) [0]На сделать тангенту к двум окружностям. Как это расчитать?? Решить систему трех уравнений? Или для каждой окружности решить систему уравнений типа sqr(x1)+sqr(y1) = sqr(r)
k1*x1 + b1 = y1
?
но тогда получится что для двух независимых "систем" фигур, будут разные решения. Относительно k1, b1. А они вроде должны быть одинаковыми, т.к. прямая то одна.
← →
MBo © (2007-07-16 19:40) [1]> тангенту к двум окружностям
Их в общем случае 4 штуки
Проще всего превратить меньшую окружность в точку, для расчета пары (внешних) касательных уменьшить большую окружность на радиус меньшей, а для второй пары - увеличить большую на тот же радиус.
← →
Alx2 © (2007-07-16 23:28) [2]Если аналитикой, то примерно так.
Для окружностей, расположенных центрами на оси x
x1 - координата центра окружности радиуса r1
x2 - координата центра окружности радиуса r2
уравнение прямой лучше задать в виде
-sin(phi)*x+cos(phi)*y=c
Тогда квадрат расстояния от точки с координатами (x0, y0) будет
S^2 = (-sin(phi)*x0+cos(phi)*y0-c)^2
Учитывая, что центры на оси ОХ, получим для решения систему
(-sin(phi)*x1-c)^2-r1^2=0,
(-sin(phi)*x2-c)^2-r2^2=0
Она элементарно решается, если взять тождество a^2-b^2=(a-b)*(a+b)
тогда касательные будут следующими:
1. c = (r2*x1+r1*x2)/(x1-x2), phi = -arcsin((r1+r2)/(x1-x2));
2. c = -(r2*x1+r1*x2)/(x1-x2), phi = arcsin((r1+r2)/(x1-x2)) ;
3. c = (r2*x1-r1*x2)/(x1-x2), phi = arcsin((r1-r2)/(x1-x2)) ;
4. c = (r1*x2-r2*x1)/(x1-x2), phi = -arcsin((r1-r2)/(x1-x2));
Если центры не лежат на оси ОХ, то меняем поворотом систему координат так, чтобы исправить это.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.042 c