Spec-Zone.ru › Matplotlib 2.2

треугольные сетки

matplotlib.tri

Функции для работы с неструктурированными треугольными сетками.

class matplotlib.tri.Triangulation(x, y, triangles=None, mask=None) [source]

Неструктурированная треугольная сетка, состоящая из npoints точек и ntri треугольников. Треугольники могут быть заданы пользователем или автоматически сгенерированы с помощью триангуляции Делоне.

Параметры:
x, y : array_like of shape (npoints)

Координаты точек сетки.

triangles : integer array_like of shape (ntri, 3), optional

Для каждого треугольника указаны индексы трёх точек, образующих треугольник, упорядоченные против часовой стрелки. Если не указаны, то выполняется триангуляция Делоне.

mask : boolean array_like of shape (ntri), optional

Индексы треугольников, которые будут замаскированы.

Примечания

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

Атрибуты:
`edges`
`neighbors`
is_delaunay : bool

Признак того, является ли триангуляция рассчитанной триангуляцией Делоне (если triangles не был указан) или нет.

calculate_plane_coefficients(z) [source]

Вычисляет коэффициенты уравнения плоскости для всех не замаскированных треугольников из координат точек (x, y) и указанного массива z, имеющего форму (npoints). Возвращаемый массив имеет форму (npoints, 3) и позволяет вычислить значение z в точке (x, y) в треугольнике tri, используя z = array[tri,0]*x + array[tri,1]*y + array[tri,2].

edges

Возвращает целочисленный массив формы (nedges, 2), содержащий все рёбра не замаскированных треугольников.

Каждое ребро — это индекс начальной и конечной точки. Каждое ребро (начало, конец и конец, начало) появляется только один раз.

get_cpp_triangulation() [source]
static get_from_args_and_kwargs(*args, **kwargs) [source]

Возвращает объект Triangulation из args и kwargs, а также оставшиеся args и kwargs со значениями, которые уже были использованы.

Существует два варианта: либо первый аргумент — это объект Triangulation, в этом случае он возвращается, либо args и kwargs достаточны для создания нового объекта Triangulation для возврата. В последнем случае см. Triangulation.__init__ для возможных args и kwargs.

get_masked_triangles() [source]

Возвращает массив треугольников, которые не замаскированы.

get_trifinder() [source]

Возвращает стандартный matplotlib.tri.TriFinder этой триангуляции, создавая его при необходимости. Это позволяет легко обмениваться одним и тем же объектом TriFinder.

neighbors

Возвращает целочисленный массив формы (ntri, 3), содержащий соседние треугольники.

Для каждого треугольника индексы трёх треугольников, которые имеют общие рёбра, или -1, если такого соседнего треугольника нет. neighbors[i,j] — это треугольник, который является соседом к ребру от точки с индексом triangles[i,j] до точки с индексом triangles[i,(j+1)%3].

set_mask(mask) [source]

Устанавливает или очищает маску массива. Это либо None, либо булевый массив формы (ntri).

class matplotlib.tri.TriFinder(triangulation) [source]

Абстрактный базовый класс для классов, используемых для поиска треугольников триангуляции, в которых лежат точки (x, y).

Вместо создания объекта класса, производного от TriFinder, обычно лучше использовать функцию matplotlib.tri.Triangulation.get_trifinder().

Производные классы реализуют __call__(x,y), где x,y — массивоподобные координаты точек той же формы.

class matplotlib.tri.TrapezoidMapTriFinder(triangulation) [source]

Наследуется от matplotlib.tri.trifinder.TriFinder

TriFinder класс, реализованный с помощью алгоритма карты трапеций из книги "Вычислительная геометрия, алгоритмы и приложения", второе издание, М. де Берг, М. ван Кревельд, М. Овермарс и О. Шварцкопф.

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

class matplotlib.tri.TriInterpolator(triangulation, z, trifinder=None) [source]

Абстрактный базовый класс для классов, используемых для интерполяции на треугольных сетках.

Производные классы реализуют следующие методы:

  • __call__(x, y) , где x, y — массивоподобные координаты точек той же формы, и возвращает массив с маской той же формы, содержащий интерполированные значения z.
  • gradient(x, y) , где x, y — массивоподобные координаты точек той же формы, и возвращает список из 2 массивов с маской той же формы, содержащих 2 производные интерполятора (производные интерполированных значений z по x и y).
class matplotlib.tri.LinearTriInterpolator(triangulation, z, trifinder=None) [source]

Наследуется от matplotlib.tri.triinterpolate.TriInterpolator

LinearTriInterpolator выполняет линейную интерполяцию на треугольной сетке.

Каждый треугольник представляется плоскостью, таким образом, что интерполированное значение в точке (x, y) лежит на плоскости треугольника, содержащего (x, y). Поэтому интерполированные значения непрерывны по всей триангуляции, но их первые производные разрывны на границах между треугольниками.

Параметры:
triangulation : Triangulation object

Триангуляция, по которой выполняется интерполяция.

z : array_like of shape (npoints,)

Массив значений, определённых в точках сетки, между которыми производится интерполяция.

trifinder : TriFinder object, optional

Если не указан, будет использован стандартный TriFinder триангуляции, вызывая matplotlib.tri.Triangulation.get_trifinder().

Методы

`__call__` (x, y) ( Возвращает интерполированные значения в точках x,y)
`gradient` (x, y) (Возвращает интерполированные производные в точках x,y)
gradient(x, y) [source]

Возвращает список из 2 массивов с маской, содержащих интерполированные производные в указанных точках x,y.

Параметры:
x, y : array-like

Координаты x и y той же формы и любого количества измерений.

Возвращает:
dzdx, dzdy : np.ma.array

2 массива с маской той же формы, что и x и y; значения, соответствующие точкам (x, y) вне триангуляции, замаскированы. Первый возвращаемый массив содержит значения , а второй — .

class matplotlib.tri.CubicTriInterpolator(triangulation, z, kind='min_E', trifinder=None, dz=None) [source]

Bases: matplotlib.tri.triinterpolate.TriInterpolator

A CubicTriInterpolator выполняет кубическую интерполяцию на треугольных сетках.

В одном измерении — на отрезке — кубическая интерполяционная функция определяется значениями функции и её производной на обоих концах. Это почти то же самое и в 2D внутри треугольника, за исключением того, что значения функции и её 2 производных должны быть определены в каждой вершине треугольника.

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

Параметры:
triangulation : Triangulation object

Треугольная сетка для интерполяции.

z : array_like of shape (npoints,)

Массив значений, определённых в узлах сетки, между которыми необходимо провести интерполяцию.

kind : {'min_E', 'geom', 'user'}, optional

Выбор алгоритма сглаживания для вычисления производных интерполянта (по умолчанию 'min_E'):

  • если 'min_E': (по умолчанию) Производные в каждой вершине вычисляются для минимизации энергии изгиба.
  • если 'geom': Производные в каждой вершине вычисляются как взвешенное среднее соответствующих нормалей треугольников. Используется для повышения скорости (большие сетки).
  • если 'user': Пользователь предоставляет аргумент dz, поэтому вычисления не требуются.
trifinder : TriFinder object, optional

Если не указано, по умолчанию используется TriFinder триангуляции, вызывающий matplotlib.tri.Triangulation.get_trifinder().

dz : tuple of array_likes (dzdx, dzdy), optional

Используется только если kind ='user'. В этом случае dz должен быть задан как (dzdx, dzdy), где dzdx, dzdy — массивы той же формы, что и z, представляющие первые производные интерполянта в точках triangulation.

Примечания

Это немного техническое примечание, описывающее способ, которым CubicTriInterpolator вычисляет кубическую интерполяцию.

Интерполяция основана на схеме подразделения Клоффа-Точера для сетки triangulation (проще говоря, каждый треугольник сетки делится на 3 дочерних треугольника, а на каждом дочернем треугольнике интерполируемая функция является кубическим многочленом от 2 координат). Этот метод происходит из анализа метода конечных элементов (МКЭ); используемый элемент — уменьшенный элемент Хси-Клаффа-Точера (ХКТ). Его базисные функции описаны в [1]. Гарантируется, что полученная функция является C1-гладкой, т. е. непрерывной и её первые производные также непрерывны (это легко показать внутри треугольников, но это также справедливо при пересечении рёбер).

В случае по умолчанию (kind ='min_E') интерполянт минимизирует энергию кривизны в функциональном пространстве, сгенерированном базисными функциями элемента ХКТ — с заданными значениями, но произвольными производными в каждой вершине. Минимизируемый функционал — интеграл так называемой полной кривизны (реализация основана на алгоритме из [2] — решатель PCG для разреженных систем):

Если пользователь выберет вариант kind ='geom', используется простое геометрическое приближение (взвешенное среднее векторов нормали треугольников), что может улучшить скорость на очень больших сетках.

Ссылки

[1] (1, 2) Michel Bernadou, Kamal Hassan, "Basis functions for general Hsieh-Clough-Tocher triangles, complete or reduced.", International Journal for Numerical Methods in Engineering, 17(5):784 - 789. 2.01.
[2] (1, 2) C.T. Kelley, "Iterative Methods for Optimization".

Методы

`__call__` (x, y) ( Возвращает интерполированные значения в точках x,y)
`gradient` (x, y) (Возвращает интерполированные производные в точках x,y)
gradient(x, y) [source]

Возвращает список 2 маскированных массивов, содержащих интерполированные производные в указанных точках x,y.

Параметры:
x, y : array-like

Координаты x и y одинаковой формы и любого числа измерений.

Возвращает:
dzdx, dzdy : np.ma.array

2 маскированных массива той же формы, что и x и y; значения, соответствующие точкам (x,y) вне триангуляции, маскируются. Первый возвращённый массив содержит значения , а второй — .

class matplotlib.tri.TriRefiner(triangulation) [source]

Абстрактный базовый класс для классов, реализующих уточнение сетки.

Класс TriRefiner инкапсулирует объект Triangulation и предоставляет инструменты для уточнения сетки и интерполяции.

Производные классы должны реализовать:

  • refine_triangulation(return_tri_index=False, **kwargs) , где необязательные ключевые аргументы kwargs определяются в каждой конкретной реализации TriRefiner, и который возвращает:

    • уточнённую триангуляцию
    • необязательно (в зависимости от return_tri_index), для каждой точки уточнённой триангуляции: индекс треугольника исходной триангуляции, к которому она принадлежит.
  • refine_field(z, triinterpolator=None, **kwargs) , где:

    • z массив значений поля (для уточнения), определённых в узлах базовой триангуляции
    • triinterpolator — TriInterpolator (необязательно)
    • другие необязательные ключевые аргументы kwargs определяются в каждой конкретной реализации TriRefiner

    и который возвращает (в виде кортежа) уточнённую треугольную сетку и интерполированные значения поля в узлах уточнённой триангуляции.

class matplotlib.tri.UniformTriRefiner(triangulation) [source]

Базовые классы: matplotlib.tri.trirefine.TriRefiner

Равномерное уточнение сетки путём рекурсивного разбиения.

Параметры:
triangulation : Triangulation

Оборачиваемая триангуляция (для уточнения)

refine_field(z, triinterpolator=None, subdiv=3) [source]

Уточняет поле, определённое на оборачиваемой триангуляции.

Возвращает refi_tri (уточнённая триангуляция), refi_z (интерполированные значения поля в узлах уточнённой триангуляции).

Параметры:
z : 1d-array-like of length n_points

Значения поля для уточнения, определённые в узлах оборачиваемой триангуляции. (n_points — количество точек в начальной триангуляции)

triinterpolator : TriInterpolator, optional

Интерполятор, используемый для интерполяции поля. Если не указан, будет использован CubicTriInterpolator.

subdiv : integer, optional

Уровень рекурсии для разбиения. По умолчанию равен 3. Каждый треугольник будет разделён на 4**subdiv дочерних треугольников.

Возвращаемое значение:
refi_tri : Triangulation object

Возвращённая уточнённая триангуляция

refi_z : 1d array of length: refi_tri node count.

Возвращённое интерполированное поле (в узлах refi_tri)

refine_triangulation(return_tri_index=False, subdiv=3) [source]

Вычисляет равномерно уточнённую триангуляцию refi_triangulation оборачиваемой triangulation

Эта функция уточняет оборачиваемую триангуляцию, разбивая каждый родительский треугольник на 4 дочерних подтреугольника, построенных на средних точках рёбер, рекурсивно (уровень рекурсии subdiv). В результате каждый треугольник делится на 4**subdiv дочерних треугольников. Значение по умолчанию для subdiv равно 3, что приводит к 64 уточнённым подтреугольникам для каждого треугольника исходной триангуляции.

Параметры:
return_tri_index : boolean, optional

Логическое значение, указывающее, будет ли возвращена таблица индексов, указывающая индекс родительского треугольника для каждой точки. Значение по умолчанию — False.

subdiv : integer, optional

Уровень рекурсии для разбиения. По умолчанию значение 3. Каждый треугольник будет разделён на 4**subdiv дочерних треугольников.

Возвращаемое значение:
refi_triangulation : Triangulation

Возвращённая уточнённая триангуляция

found_index : array-like of integers

Индекс начальной триангуляции, содержащий треугольник для каждой точки refi_triangulation. Возвращается только в том случае, если return_tri_index установлено в True.

class matplotlib.tri.TriAnalyzer(triangulation) [source]

Определяет основные инструменты для анализа триангулярной сетки и её улучшения.

Класс TriAnalizer оборачивает объект Triangulation и предоставляет базовые инструменты для анализа и улучшения сетки.

Параметры:
triangulation : Triangulation object

Оборачиваемая триангуляция для анализа.

Атрибуты:
`scale_factors`
circle_ratios(rescale=True) [source]

Возвращает меру плоскогости треугольников триангуляции.

Отношение радиуса вписанной окружности к радиусу описанной окружности — широко используемый показатель плоскогости треугольника. Оно всегда <= 0.5 и == 0.5 только для равносторонних треугольников. Значения отношения ниже 0,01 указывают на очень плоские треугольники.

Для предотвращения неоправданно низких значений из-за разницы масштаба между осями, триангулярную сетку можно предварительно масштабировать так, чтобы она поместилась в единичный квадрат с помощью scale_factors (Только если rescale равно True, что является значением по умолчанию).

Параметры:
rescale : boolean, optional

Если True, выполнится внутреннее масштабирование (на основе scale_factors), чтобы (незамаскированные) треугольники точно поместились в сетку единичного квадрата. По умолчанию True.

Возвращаемое значение:
circle_ratios : masked array

Отношение радиуса вписанной окружности к радиусу описанной окружности для каждого «масштабированного» треугольника оборачиваемой триангуляции. Значения, соответствующие замаскированным треугольникам, замаскированы.

get_flat_tri_mask(min_circle_ratio=0.01, rescale=True) [source]

Устраняет избыточно плоские граничные треугольники из триангуляции.

Возвращает маску new_mask, позволяющую очистить оборачиваемую триангуляцию от её граничных плоских треугольников (согласно их circle_ratios()). Эта маска предназначена для последующего применения к триангуляции с помощью matplotlib.tri.Triangulation.set_mask(). new_mask — расширение начальной маски триангуляции в том смысле, что изначально замаскированный треугольник останется замаскированным.

Массив new_mask вычисляется рекурсивно; на каждой итерации плоские треугольники удаляются только в том случае, если они имеют общую сторону с текущей границей сетки. Таким образом, новые дыры в области триангуляции не будут созданы.

Параметры:
min_circle_ratio : float, optional

Треугольники границы с отношением радиусов вписанной/описанной окружностей r/R будут удалены, если r/R < min_circle_ratio. Значение по умолчанию: 0,01

rescale : boolean, optional

Если True, то сначала выполнится внутреннее масштабирование (на основе scale_factors), так что (незамаскированные) треугольники точно поместятся в сетку единичного квадрата. Это масштабирование учитывает возможную разницу масштаба между осями. Значение по умолчанию (и рекомендуемое) — True.

Возвращаемое значение:
new_mask : array-like of booleans

Маска для применения к оборачиваемой триангуляции. Все изначально замаскированные треугольники останутся замаскированными в new_mask.

Примечания

Суть этой функции заключается в том, что триангуляция Делоне — для неупорядоченного набора точек — иногда содержит почти плоские треугольники на границе, что приводит к артефактам на графиках (особенно при контурном отображении с высоким разрешением). Замаскированные с помощью вычисленной new_mask, оборачиваемая триангуляция больше не будет содержать незамаскированных граничных треугольников с отношением окружностей ниже min_circle_ratio, улучшая качество сетки для последующих графиков или интерполяции.

scale_factors

Коэффициенты для масштабирования триангуляции в единичный квадрат.

Возвращает k, кортеж из 2 коэффициентов масштабирования.

Возвращаемое значение:
k : tuple of 2 floats (kx, ky)

Кортеж чисел с плавающей запятой, которые бы масштабировали триангуляцию : [triangulation.x * kx, triangulation.y * ky] точно поместилась в единичный квадрат.

© 2012–2018 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/2.2.3/api/tri_api.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API