Предикат определения положения точек относительно друг друга

Материал из Викиконспекты
Перейти к: навигация, поиск
Эта статья находится в разработке!

Пусть даны две пары касающихся окружностей [math](o_1(x_1, y_1), r_1)[/math], [math](o_2(x_2, y_2), r_2)[/math], [math](o_3(x_3, y_3), r_3)[/math], [math](o_4(x_4, y_4), r_4)[/math]. Положим, что [math]y_1 \gt y_2[/math] и [math]y_3 \gt y_4[/math].

Задача: определить взаимное расположение точек касания данных окружностей.

Пусть [math]c_1[/math] - точка внешнего касания окружностей [math](o_1(x_1, y_1), r_1)[/math] и [math](o_2(x_2, y_2), r_2)[/math].

Точка [math]c_2[/math] - точка внешнего касания окружностей [math](o_3(x_3, y_3), r_3)[/math] и [math](o_4(x_4, y_4), r_4)[/math].

Определим углы [math]\alpha, \beta[/math].

[math]\alpha[/math] - угол между отрезком, соединяющим центры окружностей [math](o_1(x_1, y_1), r_1)[/math] и [math](o_2(x_2, y_2), r_2)[/math], и осью [math]OX[/math].

[math]\beta[/math] - угол между отрезком, соединяющим центры окружностей [math](o_3(x_3, y_3), r_3)[/math] и [math](o_4(x_4, y_4), r_4)[/math], и осью [math]OX[/math].

[math]\sin \alpha = \frac{y_1 - y_2}{r_1 + r_2}[/math].

[math]\sin \beta = \frac{y_3 - y_4}{r_3 + r_4}[/math].

Предикат, определяющий взаимное расположение точек [math]c_1[/math] и [math]c_2[/math] по ординате, выглядит следующим образом:

[math]K = (r_2 \cdot \sin \alpha + y_2) - (r_4 \cdot \sin \beta + y_4) = (r_2 \cdot \frac{y_1 - y_2}{r_1 + r_2} + y_2) - (r_4 \cdot \frac{y_3 - y_4}{r_3 + r_4} + y_4)[/math]

Т.к. [math] r_1 + r_2 \gt 0, r_3 + r_4 \gt 0[/math], то можно оценивать знак выражения [math]T = K(r_1 + r_2)(r_3 + r_4)[/math]

[math]T = (r_2(y_1 - y_2)+y_2(r_1+r_2))(r_3+r_4) - (r_4(y_3-y_4)+y_4(r_3+r_4))(r_1+r_2)[/math]

Рассмотрим это выражение в дабловой арифметике. Обозначим за [math]F(p_1, p_2, \ldots , p_n) = (1 + \delta_{p_1}) \cdot (1 + \delta_{p_2}) \cdot \ldots \cdot (1 + \delta_{p_n})[/math]