Некоторые поля в описании объектов являются по значению геометрическими телами а по форме 3d-объектами. Возникает необходимость их сравнения.

Ряд процедур и структур выделены в отдельную программу в демонстративных и экспериментальных целях.

В качестве метода сравнения было выбрано сравнение инвариантов построенных на моментах. Инвариант это характеристика связанная с формой тела и неизменяемая при масштабировании(скалировании), переносах вращении при деформациях и других изменениях .

Центральный момент это выражение вида $$\nu _{pqr} = \int \limits_{-\infty}^{+\infty} \int \limits_{-\infty}^{+\infty} \int \limits_{-\infty}^{+\infty}\left( x-x_c \right)^p \left(y-y_c \right)^q \left(z-z_c\right)^r f\left(x,y,z \right) dx dy dz $$

Инварианты к масштабированию получаются по формуле нормализации $$ \lambda_{pqr}=\frac{\mu_{pqr}}{\mu_{000}^\omega }$$ где $$\omega= \frac{p+q+r}{3}+1$$

Инварианты к переносу и масштабированию второго порядка : $$\psi_{trs1}=\mu_{200}+\mu_{020}+\mu_{002}$$ $$\psi_{trs2}=\mu_{020}\mu_{002}+\mu_{200}\mu_{002}+\mu_{200}\mu_{020}-\left (\mu_{011}^2+\mu_{101}^2 +\mu_{110}^2 \right )$$ $$\psi_{trs3}=\mu_{200}\mu_{020}\mu_{002}+2\mu_{110}\mu_{101}\mu_{011}-\mu_{200}\mu_{011}^2-\mu_{020}\mu_{101}^2-\mu_{000}\mu_{110}^2$$

Сравнение производится по данным инвариантам.

Про инварианты моментов подробно здесь

Алгоритм для вычисления объемных интегралов взят отсюда.

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

Программа сравнивает два геометрических тела заданные своими поверхностями.

Поверхности сохранены в формате colllada (.dae). Множества составляющих примитивов (мэши) триангулированы. В папке с программой представлены примеры.

Результат для поверхностей с разрывами и самопересечениями не определён.

В окне программы в таблице выводятся объем, девять s моментов инвариантные к скалированию и три trs момента инвариантные к переносу (t), скалированию (s) и вращению (r).

Скачать программу

Связаться с автором можно по адресу viktorruvini@gmail.com