Читайте также: |
|
Предназначен для автоматического распознавания направления выполняемой дуги по начальной и конечной точкам и центру.
Procedure Naprawl(Xc,Yc,Xn,Yn,Xk,Yk: Float;напр.: byte);
var U1,U2,UU: Float;
begin
TekUgol(Xc,Yc,Xn,Yn,U1);
TekUgol(Xc,Yc,Xk,Yk,U2); {текущие углы начальной и конечной точек дуги}
UU:=abs(U1-U2);
if (U1<U2) and (UU<180) then напр:=1
else if (U1<U2) and (UU>180) then напр:=2
else if (U1>U2) and (UU<180) then напр:=2
else напр:=1; end;
Оператор: Naprawl(Xc,Yc,Xn,Yn,Xk,Yk,напр);
11. Выделение прямоугольной области. ‘Обход’ контура области.
Выделить область
Оператор RisLineBox(g, 1, Nag, Xg1,Yg1,Xg2,Yg2, XCg,YCg) прорисует пунктирной линией прямоугольник, откроет временный файл g и выполнит в него запись линий:
Line(Xg1, Yg1, Xg1, Yg2);
Line(Xg1, Yg2, Xg2, Yg2);
Line(Xg2, Yg2, Xg2, Yg1);
Line(Xg2, Yg1, Xg1, Yg1).
Если границы области следует записать в виде ломаной линии, т.е. выполнить ‘обход’ по или против часовой стрелки, то необходим оператор, который прочитает файл g, отсортирует строки по возрастанию (убыванию) текущего угла (Взять), перепишет файл g (Вернуть) и заполнит значение переменной ‘Обход’ (1 - против часовой стрелки, 2 - по часовой).
Procedure ОбходOбл;
var Xg1,Yg1,Xg2,Yg2,TUgol:float;
var Bx, Pd:tekst;
var El, Napr, Обход:byte;
Procedure Взять;
begin
Repeat
Читать файл линий границы области, начиная с1-й строки:
SledLine(g,1,Nag,Xg1,Yg1,Xg2,Yg2,XCg,YCg);
Определить текущий угол:
TekUgol(Xg1,Yg1,Xg2,Yg2,TUgol);
Записать в файл параметры линий в порядке убывания TUgol:
StrokBox(m, Pd, TUgol<, Napr, El, Xg1, Yg1, Xg2, Yg2);
Until E=Nkg;
DelBox(g);
end;
Procedure Вернуть;
begin
Repeat
Читать строку параметров линий, начиная с 1-й строки в файле:
SledStrok(m, Pd, TUgol<, Napr, El, Xg1, Yg1, Xg2, Yg2);
Записать в файл:
RisLineBox(g, 1, Nag, Xg1, Yg1, Xg2, Yg2, XCg, YCg),
Until E=Nkm;
end;
{ основная программа ОбходОбл }
begin
Взять; Вернуть; DelBox(m);
if TUgol = TUgol< then Обход:= 1 else Обход:= 2;{обход принят против часовой стрелки}
Дата добавления: 2015-08-09; просмотров: 110 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Пересечение дуг. | | | Взаимное положение линий чертежа. |