Я хочу получить площадь поперечного сечения геометрии (импортированной в виде файла STL) для заданной группы секущих плоскостей. На рисунках представлены некоторые полученные точки (это 2D точки). Обратите внимание, что внутри геометрии есть ветви и «пузыри». Я пытался вычислить площадь с помощью альфа-формы, но не могу определить альфу, которую можно было бы использовать на всех секущих плоскостях или которая могла бы правильно определить границу фигур. Я также пробовал AlphaOptimize, но безуспешно. На рисунках альфа = 0,3.
Рис. 1
Рис. 2
Рис. 3
Я обнаружил, что этот подход используется в этом вопросе, но, если возможно, я бы хотел избежать добавления дополнительных точек путем создания объемной сетки.
Вот как я рассчитываю площадь каждой секущей плоскости:
Код: Выделить всё
import numpy as np
from shapely.geometry import Polygon, MultiPolygon
import alphashape
def CPlane_area(points):
area = 0
alpha_shape = alphashape.alphashape(points, alpha=0.3)
if isinstance(alpha_shape, Polygon):
area = alpha_shape.area
elif isinstance(alpha_shape, MultiPolygon):
for polygon in alpha_shape.geoms:
area += polygon.area
return area
При использовании AlphaOptimize я получаю ошибку типа, хотя точки массива представляют собой массив numpy (я думаю, что shapely совместим с numpy, но я могу ошибаться, или я' я реализую что-то не так).
Подробнее здесь:
https://stackoverflow.com/questions/790 ... lpha-shape