Вычисление объема слоев модели

Для облегчения вычисления объема слоя, воспользуемся методом построения выпуклой замкнутой поверхности (выпуклой оболочки) из точек этого слоя.

Выпуклой оболочкой конечного набора точек является выпуклый многогранник, причем его вершины являются подмножеством вершин исходного набора точек. [27] Существует множество алгоритмов для создания выпуклой оболочки из набора точек. Одним из самых оптимальных способов является алгоритм быстрой оболочки (quickhull), использующий идею быстрой сортировки Хоара и основанный на принципе разделяй и властвуй [29].

В описании алгоритма будут использованы следующие понятия:

· Симплекс, или n-мерный тетраэдр – геометрическая фигура, являющаяся n-мерным обобщением треугольника.

· Многогранник – замкнутая поверхность, составленная из многоугольников.

· Выпуклый многогранник – частный случай многогранника, обладающий таким свойством, что при разбиении пространства одной из его граней он целиком лежит в одном из полупространств.

· Параллелотоп – обобщение плоского параллелограмма и объемного параллелепипеда.

· Ребро – пересечение двух граней. [27]

Алгоритм быстрой оболочки состоит из этапа подготовки и главного цикла. На этапе подготовки производятся следующие операции:

1. Построение некоего стартового симплекса из (D+1) независимых друг от друга точек, где D – размерность пространства. То есть в нашем случае с трехмерным пространством нужно выбрать любые 4 точки, трехмерный симплекс (тетраэдр). Начав со стартового симплекса, с каждым последующим шагом мы будем расширять его, получая все больший и больший многогранник, чьим неизменным свойством будет его выпуклость;

2. Распределение оставшихся точек в так называемые списки внешних точек граней – точки, находящиеся по другую сторону от грани, нежели внутренность симплекса;

3. Создание списка соседних граней. Для каждой грани он будет содержать ровно D элементов.

В главном цикле, стартовый симплекс «достраивается», захватывая все больше и больше пространства, а вместе с ним и точек исходного множества. Цикл повторяется для каждой грани до тех пор, пока не останется точек ни в одном из внешних списков. Алгоритм главного цикла описывается таким образом:

1. Выбирается грань, в списке внешних точек которой самая дальняя точка находится дальше от грани, чем аналогичные точки у других граней.

2. Выбранная грань удаляется из списка граней, как не являющаяся гранью конечного многоугольника. Из списка внешних точек данной грани находится самая дальняя от нее точка, присоединение которой к многограннику не нарушает его выпуклости.

3. Создаются грани, образованные ребрами соседних граней и выбранной точкой в качестве вершины.

После создания выпуклой оболочки слоя нужно посчитать ее объем. Если объем элементарных фигур, таких как сфера, пирамида, призма, можно выразить как функцию их геометрических размеров, то объем сложных многоугольников вычисляется только разделением их на меньшие элементарные фигуры.

Для расчета объема выпуклого многогранника нужно разделить его на пирамиды с основанием на грани многогранника и вершиной в его центре. В общем случае объем может быть выражен как:

Вычисление объема слоев модели - student2.ru (3.1)

где Вычисление объема слоев модели - student2.ru – точка на грани F,

Вычисление объема слоев модели - student2.ru – единичный вектор, перпендикулярный грани F и направленный в противоположную от многогранника сторону

Вычисление объема слоев модели - student2.ru – площадь грани F.

В языке MATLAB уже есть реализация функции образования и подсчета объема выпуклых многогранников, поэтому будем использовать ее в целях оптимизации.

Также при расчете объема нужно учитывать поправку к вместимости за счет гидростатического давления жидкости, которую вычисляют по формуле (3.4.2):

Вычисление объема слоев модели - student2.ru (3.2)

где Вычисление объема слоев модели - student2.ru – высота и толщина стенки первого пояса;

Вычисление объема слоев модели - student2.ru – высота и толщина Вычисление объема слоев модели - student2.ru -го вышестоящего пояса;

i – номер наполняемого пояса;

А2 – постоянный коэффициент для проверяемого резервуара, вычисляемый по формуле:

Вычисление объема слоев модели - student2.ru (3.3)

где Вычисление объема слоев модели - student2.ru – ускорение свободного падения, м/с2 ( Вычисление объема слоев модели - student2.ru )

Вычисление объема слоев модели - student2.ru – плотность хранимой жидкости;

Вычисление объема слоев модели - student2.ru - длина внутренней окружности первого пояса;

Вычисление объема слоев модели - student2.ru – модуль упругости материала.

Программа составления градуировочной таблицы содержит 2 функции:

· Main – главная исполняемая функция. По завершении исполнения записывает готовую градуировочную таблицу в формате xls в корень проекта.

· convhull – считает объем слоя модели. В качестве аргументов принимает матрицу координат слоя.



Наши рекомендации