Полюс
 

Отношение предназначено для нахождения Полюса, соответственной прямой-Поляре по отношению к Конике.

Если тип объекта, указанного в любом из входных параметров, оказывается несовместимым с типом этого параметра, то при установленном флажке NIL в выходной параметр заносится значение NIL-объекта.

 
Параметры
Типы объектов
Функциональное назначение параметров
Полюс
Точка
Строящийся полюс
Поляра
Прямая
Исходная прямая-поляра
Коника
Коника
Исходная коника
 

Прототип команды: Y7 Согласование Полюс ; Поляра Коника .

 

Пример:

Построить полюс p6 для прямой o1 относительно коники y1.

Алгоритм "Главный"
1
Точка p1 задана координатами -133.5 и -21.5 .
2
Точка p2 задана координатами -132.5 и 65.5 .
3
Точка p3 задана координатами 69.5 и 94.5 .
4
Точка p4 задана координатами 96.5 и -21.5 .
5
Точка p5 задана координатами -33.5 и -60.5 .
6
Коника y1 по точкам p1 , p2 , p3 , p4 , p5 .
7
Прямая o1 задана координатами двух точек: X1= -231.5 , Y1= 105.5 , X2= 127.5 , Y2= 69.5 .
8
Полюс p6 прямой o1 относительно коники y1 .


 

function EExecY7(in_prm1,in_prm2:TObj; var out_prm1:TObj;Att_polus:TAtt;Sg1,Sg2:integer;OW1:pointer):boolean;
var
   {объявление объектов-переменных}
   line,
   o3,
   o4,
   p6,
   p7,
   polus:TObj;

   {объявление объектов-констант}
   conica:TObj;

   {объявление атрибутов объектов-переменных}
   Att_line,
   Att_o3,
   Att_o4,
   Att_p6,
   Att_p7,

   {объявление атрибутов объектов-констант}
   Att_conica:TAtt;
   SpisG3:TNewList;

   {объявление величин}
   Chisl1,
   Chisl2: TOChisl;
begin
   with att_conica do
   begin
     BC:=0; PT:=0; LT:=0; LV:=0; HT:=0; Width:=1;
     Seq:=1; Chk:=1; Cmp:=0; Ilb:=0; View:=0;
     Comment:=NIL; Layers:=NIL;
   end;

   with att_line do
   begin
     BC:=0; PT:=0; LT:=0; LV:=5; HT:=0; Width:=1;
     Seq:=7; Chk:=1; Cmp:=0; Ilb:=0; View:=0;
     Comment:=NIL; Layers:=NIL;
   end;

   with att_p6 do
   begin
     BC:=0; PT:=0; LT:=0; LV:=0; HT:=0; Width:=1;
     Seq:=8; Chk:=1; Cmp:=0; Ilb:=0; View:=0;
     Comment:=NIL; Layers:=NIL;
   end;

   with att_p7 do
   begin
     BC:=0; PT:=0; LT:=0; LV:=0; HT:=0; Width:=1;
     Seq:=9; Chk:=1; Cmp:=0; Ilb:=0; View:=0;
     Comment:=NIL; Layers:=NIL;
   end;

   with att_o3 do
   begin
     BC:=0; PT:=0; LT:=0; LV:=5; HT:=0; Width:=1;
     Seq:=10; Chk:=1; Cmp:=0; Ilb:=0; View:=0;
     Comment:=NIL; Layers:=NIL;
   end;

   with att_o4 do
   begin
     BC:=0; PT:=0; LT:=0; LV:=5; HT:=0; Width:=1;
     Seq:=11; Chk:=1; Cmp:=0; Ilb:=0; View:=0;
     Comment:=NIL; Layers:=NIL;
   end;

   Chisl1:=TOChisl.Create(MCompl(-0.4065,0),tc_Constant,NAtt,NIL,c_ord);
   Chisl2:=TOChisl.Create(MCompl(1.173,0),tc_Constant,NAtt,NIL,c_ord);

   line:=in_prm1.CreateCopy(NIL);
   line.OAtt:=att_line;

   conica:=in_prm2.CreateCopy(NIL);
   conica.OAtt:=att_conica;

 

   {реализация программы}

   EExecP9(line,Chisl1,p6,Att_p6,Sg1,-1,NIL);
   EExecP9(line,Chisl2,p7,Att_p7,Sg1,1,NIL);
   EExecY6(p6,conica,o3,Att_o3,1,Sg2,NIL);
   EExecY6(p7,conica,o4,Att_o4,1,Sg2,NIL);
   EExecP2(o3,o4,polus,Att_polus,1,1,OW1);

   out_prm1:=polus.CreateCopy(OW1);
   out_prm1.OAtt:=att_polus;

 

   {освобождение памяти из-под объявленных объектов}

   line.Destroy;
   o3.Destroy;
   o4.Destroy;
   p6.Destroy;
   p7.Destroy;
   polus.Destroy;
   conica.Destroy;
   Chisl1.Destroy;
   Chisl2.Destroy;
end; {EExecY7}