Читайте также:
|
|
Procedure Tch_NiK(X Cg,YCg,Xg1,Yg1,Xg2,Yg2,Xs,Y s,X Tn,YTn,LD k);
параметры ввода вывода
Оператор определяет начальную точку Тn(XTn,YTn) измерения длины дуги до текущих точек Тe и Tb. Одновременно определяется максимальная длина дуги от Tn до Тk. Если длина дуги от Tn до Te или от Tn до Tb меньше максимальной, то точки Те и Tb расположены внутри дуги NOKO, равно как и отрезки SNe, Skb. Если двигаться в направлении ‘обхода’, то первым встретим отрезок SNe, затем - дугу
SKb. Те же отрезки прямой и дуги находятся внутри области, ограниченной дугой NOKO.
Направление обхода принимают совпадающим с направлением от начальной точки к конечной элемента NOKO. По отношению к нему определяется положение остальных линий.
Если рассматривается внутренняя область, то направление измерений противоположно направлению обхода.
Центр окружности, длины дуг которой подлежат измерению, находится в точке S. S - точка пересечения NOKO c внешним элементом (элементами).
Начальная точка Тn(XTn,YTn) расположена ближе к началу дуги NO нежели Tk(XTk,YTk).
begin
if Obhod=1 then Hod:=2 else Hod:=1; {определено направление измерений ‘Hod’ для внутренней области}
Элемент, по отношению к которому определяется других линий, отрезок прямой:
if El=1 then begin
Определим точки пересечения отрезка прямой и окружности:
TekUgol(Xg1, Yg1, Xg2, Yg2,Ug);
OtrDug(Xg1,Yg1,Ug,Xs,Ys,Ri,XP1,YP1,XP2,YP2,P); {Ri - радиус окружности измерения дуги}
Найдем точки начала(XTn,YTn) и конца(XTk,YTk) измерений:
DlinaL(Xg1,Yg1,XP1,YP1,L1);
DlinaL(Xg1,Yg1,XP2,YP2,L2);
if L1<L2 then begin
XTn:=XP1; YTn:=YP1; XTk:=XP2; YTk:=YP2;
end
else begin
XTn:=XP2; YTn:=YP2; XTk:=XP1; YTk:=YP1;
end;
Выясним принадлежность точки Tk отрезку прямой:
PikOtr(XTk,YTk,Xg1,Yg1,Xg2,Yg2,P);
Определим LDk:
if P=1 then LDk:=180 else LDk:=360; {Ldk - max угол, при LD<=LDk точка находится внутри области.
Если S совпадает с концом отрезка прямой, LDk=360. В другом случае LDk=180}
end
Элемент, по отношению к которому определяется положение других линий, дуга:
else begin
Определим точки пересечения дуги и окружности:
DugDug(XCg,YCg,R,Xs,Ys,Ri,XP1,YP1,XP2,YP2,P);
Определим длины дуг от начальной точки дуги (Xg1,Yg1) до точек пересечения (XP1,YP1), (XP2,YP2):
DlinaD(XСg,YCg,Xg1,Yg1,XP1,YP1,Nag,LD1);
DlinaD(XCg,YCg,Xg1,Yg1,XP2,YP2,Nag,LD2);
Найдем точки начала(XTn,YTn) и конца(XTk,YTk) измерений:
if LD1<LD2 then begin
XTn:=XP1; YTn:=YP1; XTk:=XP2; YTk:=YP2;
end
else begin
XTn:=XP2; YTn:=YP2; XTk:=XP1; YTk:=YP1;
end;
Определим LDk:
DlinaD(Xs,Ys,XTn,YTn,XTk,YTk,Hod,LDk);
end;
end;
Дата добавления: 2015-08-09; просмотров: 102 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Направление дуги. | | | Определение отрезков прямых, расположенных в области |