ksIsPointInsideContour - Проверить положение точки относительно кривой
guide
api7
guide
api7
ksispointinsidecontour
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("Это не контур");
}