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

Направление дуги.

Читайте также:
  1. В конкурсе не поддерживается данное направление.
  2. Варшавско-Берлинское направление
  3. Направление 010500.62 Прикладная математика и информатика
  4. Направление 020200.62 Биология
  5. Направление 020400.62 География
  6. Направление 020800.62 Экология и природопользование
  7. Направление 030600.62 Журналистика

Предназначен для автоматического распознавания направления выполняемой дуги по начальной и конечной точкам и центру.

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 | Нарушение авторских прав


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

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