--- title: "ksIsPointInsideContour - Проверить положение точки относительно кривой" type: guide api: [api7] tags: [guide, api7, ksispointinsidecontour] sources: - ksispointinsidecontour.html --- *API экспортных функций > Функции работы с графическим документом  > Вспомогательные построения  > Математические функции * ## ksIsPointInsideContour - Проверить положение точки относительно кривой Пример... Аналог данной функции при использовании Automation - метод ksDocument2D::ksIsPointInsideContour. Синтаксис: ``` int ksIsPointInsideContour (reference p, double x, double y, double precision); Входные параметры: p - указатель на контур, x, y - координаты точки, precision - точность проверки (от 1 до 1E-6). Возвращаемое значение: 0 - в случае неудачи, 1 - точка вне контура, 2 - точка на контуре, 3 - точка внутри контура. ``` ## ksIsPointInsideContour, ksIsCurveClosed - пример использования reference pObj; RequestInfo info; double x, y; memset(&info, 0, sizeof(info)); info.prompt = "Укажите контур"; int j = Cursor(&info, &x ,&y, 0); if (j) { //выбрать контур if(ExistObj(pObj = FindObj(x, y, 1e6)) && GetObjParam(pObj, 0,0,0) == CONTOUR_OBJ ){ //проверим контур на замкнутость int close = ksIsCurveClosed(pObj); char buf[250]; sprintf(buf, " контур %s", close ? "замкнут" : "разомкнут"); Message(buf); info.prompt = "Укажите точку"; do { //задать точку j = Cursor(&info, &x ,&y, 0); if (j) { //проверяем расположение точки int side = ksIsPointInsideContour(pObj, x, y, 0.001); sprintf(buf, " точка %s", side==1 ? "вне контура" : side==2 ? "на контуре" : "внутри контура"); Message(buf); } } while(j); } else Error("Это не контур"); }