Что измеряет площадь в scipy ConvexHull?

Значение атрибута «область» в scipy ConvexHull (см. http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.ConvexHull.html) объект не кажется (как я понимаю) областью выпуклой оболочки. С другой стороны, значение «объема» похоже на площадь выпуклой оболочки.

from scipy.spatial import ConvexHull
import numpy

points = numpy.array([[-1,-1], [1,1], [-1, 1], [1,-1]])
hull = ConvexHull(points)

print("Volume is %2.2f" % hull.volume) # Prints 4.00
print("Area is %2.2f" % hull.area) # Prints 8.00

В приведенном выше примере я ожидаю, что площадь выпуклой оболочки четырех точек будет равна 4,0. Вот что такое "объем". Что же дает нам «площадь»?


person mjandrews    schedule 27.02.2016    source источник


Ответы (2)


Объем и площадь - это трехмерные понятия, но ваши данные имеют двумерную форму - квадрат 2x2. Его площадь равна 4, а периметр равен 8 (2d аналоги).

person hpaulj    schedule 27.02.2016
comment
Черт возьми, я только что потратил 2 дня на отладку всего остального в моем проекте, прежде чем, наконец, задаться вопросом, area на самом деле является областью... Большое спасибо за ваш ответ. - person max; 12.01.2017
comment
Не могли бы вы поподробнее об этом...? Вы имеете в виду, что во втором случае его площадь соответствует hull.volume? - person Tom; 15.02.2019

Документация для scipy.spatial.ConvexHull гласит: :

area : float
Площадь поверхности выпуклой оболочки при вводе размера › 2. Когда входные точки являются двумерными, это периметр выпуклой оболочки.

volume: float
Объем выпуклой оболочки при вводе размера › 2. Когда входные точки являются двумерными, это площадь выпуклой оболочки.

area и volume корпуса - это площадь поверхности и объем. У 2D-объектов нет площади поверхности или объема, но периметр концептуально аналогичен площади 3D-поверхности, игнорируя отсутствие глубины, а область, содержащаяся в объекте, подобна 3D-объему, но без учета глубины.

person Vic    schedule 11.01.2021