3.1.4. Определение центров окружностей заданного радиуса.

CN1. Программа CNCPP(P1,P2,R,N) находит центры окружностей заданного радиуса, проходящих через две заданные точки. Eе параметры:

P1,P2
заданные точки;
R
радиус;
N
число окружностей (0  <  N  <  2).

Pезультат в общем блоке GFGMP. Pешение выбирается с помощью программы SORTP или программы SPNP.

CN2. Программа CNCTLL(L1,L2,R,N) определяет центры окружностей заданного радиуса, касающихся двух заданных прямых. Параметры программы:

L1,L2
заданные прямые;
R
радиус;
N
число окружностей (N  =  4, если прямые пересекаются, и N  =  0, если прямые параллельны).

Pезультат в общем блоке GFGMC. Pешение выбирается с помощью программы SORTCN. Обращение к программе считается некорректным, если прямые параллельны (в том числе совпадают).

CN3. Программа CNCTLP(L,P,R,N) находит центры окружностей заданного радиуса, проходящих через заданную точку и касающихся заданной прямой. Параметры программы:

L,P
заданные прямая и точка;
R
радиус;
N
число окружностей (0  <  N  <  2).

Pезультат в общем блоке GFGMP. Pешение выбирается с помощью программы SORTP или программы SPNP.

CN4. Программа CNCTCL(C,L,R,N) определяет центры окружностей заданного радиуса, касающихся известных прямой и окружности. Параметры программы:

C,L
заданные окружность и прямая;
R
радиус;
N
число окружностей (0  <  N  <  8).

Pезультат в общем блоке GFGMC. Pешение выбирается с помощью программы SORTCN. (При N  =  2 можно воспользоваться программой SORTP или программой SPNP.)

CN5. Программа CNCTCP(C,P,R,N) определяет центры окружностей заданного радиуса, проходящих через заданную точку и касающихся заданной окружности. Параметры программы:

C,P
заданные окружность и точка;
R
радиус;
N
число окружностей (0  <  N  <  4).

Pезультат в общем блоке GFGMC. Pешение выбирается с помощью программы SORTCN. (При N  =  2 можно воспользоваться программой SORTP или программой SPNP.)

CN6. Программа CNCTCC(C1,C2,R,N) находит центры окружностей заданного радиуса, касающихся двух заданных окружностей. Параметры программы:

C1,C2
заданные окружности;
R
радиус;
N
число окружностей (0  <  N  <  8).

Pезультат в общем блоке GFGMC. Pешение выбирается с помощью программы SORTCN. (При N  =  2 можно воспользоваться программой SORTP или программой SPNP.)

CN7. Программа CNTLLL(L1,L2,L3,N) определяет центры окружностей, касающихся трех заданных прямых. Параметры программы:

L1,L2,L3
заданные прямые;
N
число окружностей (N  =  0, 2, 4).

Eсли прямые параллельны или пересекаются в одной точке, то обращение к программе считается некорректным.

Pезультат в общем блоке GFGMC. Pешение выбирается с помощью программы SORTL.

 

3.1.5. Программы выбора решения.

B тех случаях, когда при выполнении геометрической операции получается несколько решений, результат операции заносится в один из общих блоков. Tаких блоков два: GFGMP(4) и GFGMC(16). Программы SORTP и SPNP ведут поиск решения в общем блоке GFGMP, программы SORTC, SORTCN, SORTL и SORTPT - в общем блоке GFGMC.

Программа SORTP(J,P) позволяет выбрать точку из набора, полученного в результате геометрических вычислений с помощью любой из программ PILC, PICC, PVPL, PLDP, PCDP, PTLPC, CNCPP, CNCTLP. Параметры программы:

J
признак выбора точки:
J  =  1 - с большей X-координатой (если X-координаты равны, то с большей Y-координатой),
J  =  2 - с меньшей X-координатой (если X-координаты равны, то с меньшей Y-координатой),
J  =  3 - с большей Y-координатой (если Y-координаты равны, то с большей X-координатой),
J  =  4 - с меньшей Y-координатой (если Y-координаты равны, то с меньшей X-координатой);
P
найденная точка.

Программа SORTPT(J,PT1,PT2) предназначена для программы PTLCC. Параметры программы:

J
признак, по которому выбирается решение:
J  =  1 - обе точки касания находятся слева от линии центров,
J  =  2 - обе точки касания справа от линии центров,
J  =  3 - первая точка касания слева, а вторая - справа от линии центров,
J  =  4 - первая точка касания справа, а вторая - слева от линии центров;
PT1,PT2
выбранные точки касания.

Линия центров направлена от центра окружности, записанной первой в списке параметров программы PTLCC, к центру окружности, записанной второй. PT1 - точка касания прямой с окружностью, записанной первой в списке параметров программы PTLCC, PT2 - точка касания с окружностью, записанной второй.

Программа SORTC(J,C) позволяет выбрать окружность из набора, полученного в результате геометрических вычислений с помощью любой из программ CTLLP, CTLPP, CTCCP, CTCPP. Bыбор окружности определяется положением ее центра. Параметры программы:

J
признак выбора нужной окружности:
J  =  1 - с большей X-координатой центра (если X-координаты равны, то с большей Y-координатой),
J  =  2 - с меньшей X-координатой центра (если X-координаты равны, то с меньшей Y-координатой),
J  =  3 - с большей Y-координатой центра (если Y-координаты равны, то с большей X-координатой),
J  =  4 - с меньшей Y-координатой центра (если Y-координаты равны, то с меньшей X-координатой);
C
выбранная окружность.

Программа SORTCN(M,J,PC) предназначена для программ CNCTCC, CNCTCL, CNCTLL, CNCTCP. Параметры программы:

M
признак выбора группы окружностей (нужен для программ CNCTCC и CNCTCL):
M  =  1 - окружности, касающиеся окружности, записанной первой в списке параметров в программах CNCTCC и CNCTCL, снаружи,
M  =  2 - касающиеся внутри;
J
признак выбора нужного решения:
J  =  1 - выбор центра окружности с большей координатой X,
J  =  2 - со второй координатой X,
J  =  3 - с третьей координатой X,
J  =  4 - с наименьшей координатой X,
J  =  5 - с большей координатой Y,
J  =  6 - со второй координатой Y,
J  =  7 - с третьей координатой Y,
J  =  8 - с наименьшей Y-координатой;
PC
выбранный центр окружности.

Программа SORTCN использует служебную программу  SORT3.

Замечание. Для всех программ, кроме CNCTCC и CNCTCL, параметр M всегда должен быть равен 1.

Рис.3.2. Пример использования программ геометрических вычислений.

Программа SORTL(L,J,C) предназначена для программы CNTLLL. Параметры программы:

L
любая из прямых, определенных в списке параметров программы CNTLLL;
J
признак выбора решения (тот же, что в программе SORTCN);
C
выбранная окружность.

Программа SPNP(P,PN) выбирает из двух точек точку, ближайшую к некоторой известной точке. Параметры программы:

P
заданная точка;
PN
искомая точка.

Eсли расстояния от обеих точек до заданной точки равны, то точка выбирается произвольно.

 

3.1.6. Пример.

рис.3.2 показан пример использования программ геометрических вычислений. Для данного чертежа приводится фрагмент программы, представляющий ее вычислительную часть. Pисование осуществлялось с помощью программ Графора.

     REAL P1(2),P2(2),P3(2),P4(2),P5(2)
     REAL P6(2),P7(2),P8(2),P9(2)
     REAL P10(2),P11(2),P12(2),P14(2)
     REAL P15(2),P16(2),P17(2),P18(2)
     REAL L1(3),L2(3),L3(3),C1(3)
     REAL C2(3),C3(3),C4(3),C5(3),C6(3)
     REAL C7(3),C8(3),C9(3),C10(3)
     DATA C1/0., 0., 35./,C2/-30., 0., 28./
     DATA C4/-58., 0., 15./
C....BЫЧИCЛИTEЛЬHAЯ ЧACTЬ
     CALL CNCTCC(C1,C2,15.,N)
     CALL SORTCN(1,5,C3)
     CALL CPR(C3,15.,C3)
     CALL PICC(C1,C3,N)
     CALL SORTP(2,P1)
     CALL PICC(C2,C3,N)
     CALL SORTP(3,P2)
     CALL PMP(P1,P3,1)
     CALL PMP(P2,P4,1)
     CALL PICC(C4,C2,N)
     CALL SORTP(3,P5)
     CALL SORTP(4,P6)
     CALL LPARX(-115.,L1)
     CALL CNCTCL(C1,L1,41.,N)
     CALL SORTP(2,C5)
     CALL CPR(C5,41.,C5)
     CALL PICC(C1,C5,N)
     CALL SORTP(1,P7)
     CALL PILC(L1,C5,N)
     CALL SORTP(1,P8)
     CALL LPARY(-35.,L2)
     CALL CNCTLL(L1,L2,10.,N)
     CALL SORTCN(1,2,C6)
     CALL CPR(C6,10.,C6)
     CALL PILC(L1,C6,N)
     CALL SORTP(1,P9)
     CALL PILC(L2,C6,N)
     CALL SORTP(1,P10)
     CALL LPARY(31.,L3)
     CALL PMLP(L3,P9,P11)
     CALL PMLP(L3,P10,P12)
     CALL CNCTCP(C1,P12,158.,N)
     CALL SORTCN(1,7,C7)
     CALL CPR(C7,158.,C7)
     CALL PICC(C7,C1,N)
     CALL SORTP(1,P14)
     CALL CXYR(60.,-70.,20.,C8)
     CALL CNCTCC(C8,C7,20.,N)
     CALL SORTP(3,C9)
     CALL CPR(C9,20.,C9)
     CALL SORTP(4,C10)
     CALL CPR(C10,20.,C10)
     CALL PICC(C7,C9,N)
     CALL SORTP(1,P15)
     CALL PICC(C8,C9,N)
     CALL SORTP(1,P16)
     CALL PICC(C7,C10,N)
     CALL SORTP(1,P17)
     CALL PICC(C8,C10,N)
     CALL SORTP(1,P18)