--- title: "ksIntersectCurvCurv - Получить координаты точек пересечения двух кривых" type: guide api: [api7] tags: [guide, api7, ksintersectcurvcurv] sources: - ksintersectcurvcurv.html --- *API экспортных функций > Функции работы с графическим документом  > Вспомогательные построения  > Функции вычисления пересечений * ## ksIntersectCurvCurv - Получить координаты точек пересечения двух кривых Пример... Аналог данной функции при использовании Automation - метод ksMathematic2D::ksIntersectCurvCurv. Синтаксис: ``` int ksIntersectCurvCurv (reference p1, reference p2, reference array); Входные параметры: p1 - указатель на первую кривую, p2 - указатель на вторую кривую. Выходной параметр: array - динамический массив точек пересечения MathPointParam. Возвращаемое значение: 1 - пересечение данных объектов обнаружено, 0 - пересечение не обнаружено (кривые не пересекаются или совпадают), -1 - первый объект не существует, -2 - второй объект не существует, -3 - кривые расположены в разных видах, -4 - не совпадают СК определения кривых, -5 - первый объект не является кривой, -6 - второй объект не является кривой, -7 - ошибка: массив типа POINT_ARR предварительно не создан. ``` Примечание: Динамический массив точек пересечения array должен быть создан до передачи его в функцию. ## ksIntersectCurvCurv - пример использования reference line = ::LineSeg(-100, -100, 100, 100, 1); // отрезок reference cir = ::Circle (20, 20, 35, 1); // окружность reference array = ::CreateArray(POINT_ARR, 0); // создать пустой массив точек пересечения if (::ksIntersectCurvCurv(line, cir, array) > 0) { // найти точки пересечения кривых int count = ::GetArrayCount(array); // количество элементов в массиве char buf[128]; ::sprintf(buf, "кол-во элементов = %i", ::GetArrayCount(arr)); ::Message(buf); MathPointParam par; for (int i = 0; i < count; i) { if (::GetArrayItem(array, i, &par, sizeof(MathPointParam))) { ::sprintf(buf, "координаты %i-й точки : %g ; %g", i, par.x, par.y); ::Message(buf); } } }