How to compute inside points in n dim convex hull?

조회 수: 14 (최근 30일)
stuti chug
stuti chug 2020년 6월 22일
댓글: John D'Errico 2020년 6월 23일
I'm working on convex hull and facing problem in computation of inside points. In 2D convex hull we can use inpolygon function for calculating inside points. But inpolygon function didn't work in n dim convexhull (convhulln function). Please help me out.

채택된 답변

John D'Errico
John D'Errico 2020년 6월 22일
I wrote inhull for this purpose. Find it here on the file exchange.
You can use it on a set of points directly, where it computes the convex hull for you.
xyz = rand(1000,5);
inhull([.5 .5 .5 .5 .5; 2 .5 .5 .5 .5],xyz)
ans =
2×1 logical array
1
0
Or you can precompute the convex hull.
tess = convhulln(xyz);
inhull([.5 .5 .5 .5 .5; 2 .5 .5 .5 .5],xyz,tess)
ans =
2×1 logical array
1
0
It even allows you to provide a tolerance.
  댓글 수: 2
stuti chug
stuti chug 2020년 6월 22일
Thankyou sir.
I also have one more query.
Actulally in inpolygon function it consider border point as inside points. so i want know that inhull function only compute inside points or it consider border points as inside points.
John D'Errico
John D'Errico 2020년 6월 23일
inhull does not distinguish between a point that lies exactly on the boundary or inside. It works in floating point arithmetic as it must. As such, it tests for an inequality of the general form <=0. But you should never worry about a floating point value being exacly zero, and that is what would need to happen for a point to be seen as exactly on a boundary. There will alsys be some floating point trash in the result, so values that are within +/- delta, for some small value of delta would arguably be viewed as being on the boundary itself.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Bounding Regions에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by