- •Гоувпо «Воронежский государственный технический университет» м.И. Чижов а.Н. Юров
- •Введение
- •1. Создание проектов прикладных библиотек
- •2. Работа с двумерными графическими документами
- •2.1. Функции для работы с графическими документами
- •2.2. Функции построения составных объектов
- •2.3. Функции ввода параметров
- •3. Элементы и функции для проведения вспомогательных построений
- •3.1. Математические функции
- •3.2. Функции вычисления пересечений
- •3.3. Функции вычисления длин, расстояний, углов
- •4. Работа с базами данных
- •5. Примеры проектирования библиотек в 2d
- •5.1. Построение графиков функций
- •5.2. Построение фигур
- •5.3. Построение эскизов
- •6. Работа с твердотельными моделями и объектами
- •6.1. Построение твердотельных деталей посредством операций вращения и выдавливания
- •6.2. Построение фасок и скруглений в твердотельных моделях прикладных библиотек
- •6.3. Построение объектов в цвете
- •6.4. Работа со сборками
- •6.5. Включение в сборочные узлы твердотельных моделей без истории построения
- •6.6. Построение сборочных узлов и компонентов с параметрами посредством диалога
- •Заключение
- •Библиографический список
- •3 94026 Воронеж, Московский просп., 14
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++; }