Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000392.doc
Скачиваний:
18
Добавлен:
30.04.2022
Размер:
2.94 Mб
Скачать

3. Элементы и функции для проведения вспомогательных построений

Элементы и функции, позволяющие выполнять и решать некоторые вопросы, не связанные напрямую с геометрическими построениями, относятся к вспомогательным построениям. Однако в документации приводится расширенный список команд, который входит в эту группу, но решает совершенно иные задачи. Функции экспорта документов, функции работы со спецификациями и моделями, событиями и интерфейсами системы в данных методических указаниях не будут рассмотрены, так как они не востребованы в составе библиотек с двумерными графическими документами. Для измерений и расчетов в API 2D определены следующие категории: математические функции, функции вычисления перемещений, функции вычисления длин и углов, функции вычисления касаний и сопряжений.

3.1. Математические функции

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

Функция ksEqualPoints позволяет определить эквивалентность (совпадение) двух точек. Формат команды следующий:

int ksEqualPoints(double x1, double y1, double x2, double y2) где,

x1, y1-координаты первой точки;

x2, y2- координаты второй точки.

Функция вернет значение единицы, если координаты точек совпадают и 0- в противном случае.

Пример использования:

struct { double x,y;} points1,points2,points3;

points1.x=10;points1.y=45;

points2.x=20;points2.y=80;

points3.x=10;points3.y=45;

if(ksEqualPoints(points1.x,points1.y,points2.x,points2.y))

MessageT (_T("Координаты точек совпадают"));

else MessageT (_T("Координаты точек не совпадают"));

if(ksEqualPoints(points1.x,points1.y,points3.x,points3.y))

MessageT (_T("Координаты точек совпадают"));

else MessageT (_T("Координаты точек не совпадают"));

Функция Symmetry определяет координаты точки, симметричной относительно заданной оси. Формат функции следующий:

void Symmetry (double x, double y,double x1, double y1, double x2, double y2, double *xs, double *ys) где,

x, y- координаты базовой точки;

x1, y1- координаты первой точки на оси симметрии;

x2, y2- координаты второй точки на оси симметрии;

координаты симметричной точки.

xs, ys- координаты симметричной точки.

Пример использования:

double xs,ys;

Symmetry (0, 10, 10, 0, 10, 100, &xs, &ys);

TCHAR buf[50];

_stprintf( buf, _T("Координаты новой точки: x->%.2lf; y->%.2lf "),xs,ys);

MessageT( buf );

Функция Rotate позволяет повернуть точку относительно центра. Формат команды следующий:

void Rotate (double x, double y, double xc, double yc, double ang, double *xr, double *yr) где,

x, y- координаты базовой точки;

xс, yс- координаты центра поворота;

ang- угол поворота;

xr, yr- координаты точки после поворота.

Пример использования:

double xb,yb,xr,yr;

int angle=180;

xb=10;yb=10;

Point (xb,yb,0);

Rotate (xb,yb,20,20,angle,&xr,&yr);

Point (xr,yr,0);

Функция MovePoint производит сдвиг точки по заданному направлению. Команда имеет следующий формат:

void MovePoint (double *x, double *y, double ang, double len) где,

x, y- координаты точки;

ang- угол вектора сдвига в градусах;

len- длина вектора сдвига.

Координаты x и y точки являются одновременно и входными, и выходными. На входе они представляют собой начальные координаты точки, а в результате работы метода они преобразуются в координаты точки после сдвига.

Пример использования:

double x, y;

x = 60;

y = 10;

int i;

while (i<11)

{

LineSeg ( 10, 10, x, y, 1);

MovePoint (&x, &y, 36, 10);

i++;

}