Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Определение дуг, расположенных в области

Читайте также:
  1. C)В области среднего носового хода и располагается выше ее дна
  2. III. Определение размера единовременной социальной выплаты
  3. III. Социальные гарантии в области профессиональной ориентации
  4. IV. Определение массы груза, опломбирование транспортных средств и контейнеров
  5. А) Холецистоэктомия. Холедохолитотомия. Дренирование холедоха и подпеченочной области.
  6. Автоматизированные информационные системы в области права.
  7. Автомобильный: По территории Одесской области проходят: автомагистраль E 58; автомагистраль E 87; автомагистраль E 95.

 

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

Дуга NK пересекается с линиями границы области. В этом случае следует в любой последовательности определить точки S1, S2, S3, S4, S5 и записать в файл с сортировкой строк по возрастанию LD, где LD - длина дуги от начальной точки N до точки пересечения S.

 

Procedure Box_Dug;{оператор записи дуги в текущий файл}

var P, Pt, Ps:byte;

begin

Ps:=0; {счетчик записей точек пересечения}

Repeat

Читаем файл линий границы выделенной области с 1-ой строки:

SledLine(g, 1, Nag, Xg1, Yg1, Xg2, Yg2, XCg, YCg),

TekUgol(Xg1, Yg1, Xg2, Yg2,Ug);

Определяем точку пересечения дуги чертежа (XCm,YCm,Xm1,Ym1,Xm2,Ym2) с линией области:

OtrDug(Xg1,Yg1,Ug,XCm,YCm,R,XP1,YP1,XP2,YP2,Pt);

Проверка на принадлежность точки пересечения (XP1,YP1) отрезку линии выделенной области:

if Pt=1 then PikOtr(XP1,YP1,Xg1,Yg1,Xg2,Yg2,P);

Проверка на принадлежность точки пересечения (XP1,YP1) дуге:

if P=1 then

. PikDug(XP1,YP1,XCm,YCm,Xm1,Ym1,Xm2,Ym2,Nam,P);

if P=1 then begin

Ps:=Ps+1; {наличие точки пересечения}

Xs:=XP1; Ys:=YP1; {координаты точки пересечения}

Определяем длину дуги чертежа от начала до точки пересечения S:

DlinaD(XСm,YСm,Xm1,Ym1,Xs,Ys,nam,LD);

if LD>0 then

Запись в текущий файл с сортировкой строк по возрастанию LD:

StrokBox(e, Ps, LD>, Xg1, Yg1, Xg2, Yg2, Xs, Ys);

end;

Проверка на принадлежность 2-ой точки пересечения (XP2,YP2) отрезку линии выделенной области:

if Pt=1 then PikOtr(XP2,YP2,Xg1,Yg1,Xg2,Yg2,P);

Проверка на принадлежность точки пересечения (XP2,YP2) дуге:

if P=1 then

. PikDug(XP2,YP2,XCm,YCm,Xm1,Ym1,Xm2,Ym2,Nam,P);

if P=1 then begin

Ps:=Ps+1; {наличие точки пересечения}

Xs:=XP2; Ys:=YP2; {координаты точки пересечения}

Определяем длину дуги чертежа от начала до точки пересечения S:

DlinaD(XCm,YCm,Xm1,Ym1,Xs,Ys,nam,LD);

if LD>0 then

Запись в текущий файл с сортировкой строк по возрастанию LD:

StrokBox(e, Ps, LD>, Xg1, Yg1, Xg2, Yg2, Xs, Ys);

end;

Until E=Nkg; {номер последней строки в файле}

if Ps=0 then begin

Проверка на принадлежность начальной точки дуги (Xm1,Ym1) выделенной области

Tch_Obl(Xm1,Ym1,X1,Y1,X2,Y2,P);

if P=1 then

дуга расположена внутри области

RisLineBox(o, 2, Nam, Xm1, Ym1, Xm2, Ym2, XCm, YCm);

end;

Если есть точки пересечения, то необходимо выделить те участки дуги, которые расположены внутри области (Procedure FiltrDug):

if Ps>0 then FiltrDug;

end;


Дата добавления: 2015-08-09; просмотров: 67 | Нарушение авторских прав


Читайте в этой же книге: Длина отрезка и текущий угол. | Взаимное положение отрезков. | Точки пересечения прямой и дуги. | Пересечение дуг. | Направление дуги. | Взаимное положение линий чертежа. |
<== предыдущая страница | следующая страница ==>
Определение отрезков прямых, расположенных в области| Произвольный контур

mybiblioteka.su - 2015-2024 год. (0.01 сек.)