Читайте также: |
|
Для определения точек А и В пересечения двух окружностей с центрами (XC1,YC1), (XC2,YC2) и радиусами R1, R2 следует (рис. 99):
- определить расстояние L между центрами окружностей;
- определить текущий угол U прямой, соединяющей центры;
- повернуть вторую окружность вокруг центра первой окружности на угол (- U);
После поворота координаты точек пересечения определяются системой уравнений
.
- вернуть точки пересечения окружностей в исходное положение.
Программное описание оператора:
begin
DlinaO(XС1,YС1,XC2,YC2,L);
TekUgol(XC1,YC1,XC2,YC2,U);
if (R1+R2<L) or (L+R1<R2) or (L+R2<R1) or (L<0,001) then
begin
P:=0; {нет пересечения}
end
else begin
; ;
; ; {решена система уравнений при условии, что угол U = 0}
XTS:=XT; YTS:=YT; UgS:=Ugol;
Ugol:= U; XT:=XC1; YT:=YC1; {введены угол возврата точек пересечения и текущая база}
PX[1]:=XAP; PY[1]:=YAP; PX[2]:=XBP; PY[2]:=YBP;
Preobr(2); {выполнен возврат}
XA:=PX[1]; YA:=PY[1]; XB:=PX[2]; YB:=PY[2]; {выполнены присвоения значений корд. точек А и В}
XT:=XTS; YT:=YTS; Ugol:=UgS;
end;
end;
Оператор: DugDug(XC1,YC1,R1,XC2,YC2,R2,X1,Y1,X2.Y2,P).
Остается определить принадлежность точек дугам:
PikDug(XA,YA,XC1,YC1,XN1,YN1, XK1,YK1,напр.,P)® P=1
PikDug(XB,YB,XC1,YC1,XN1,YN1, XK1,YK1,напр.,P)® P=1.
PikDug(XA,YA,XC2,YC2,XN2,YN2, XK2,YK2,напр.,P)® P=1
PikDug(XB,YB,XC2,YC2,XN2,YN2, XK2,YK2,напр.,P)® P=1.
Дата добавления: 2015-08-09; просмотров: 77 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Точки пересечения прямой и дуги. | | | Направление дуги. |