triplot
|
Страница в процессе перевода. |
#
Makie.triplot — Function
triplot(x, y; kwargs...)
triplot(positions; kwargs...)
triplot(triangles::Triangulation; kwargs...)
Строит триангуляцию на основе предоставленной позиции или объекта Triangulation из DelaunayTriangulation.jl.
Тип графика
Псевдоним типа графика для функции triplot — Triplot.
Примеры
triplot строит треугольную сетку, созданную из произвольного набора точек. Входные данные могут быть представлены либо в виде точек (например, scatter или lines), либо а виде Triangulation из пакета DelaunayTriangulation.jl.
using CairoMakie
using DelaunayTriangulation
using Random
Random.seed!(1234)
points = randn(Point2f, 50)
f, ax, tr = triplot(points, show_points = true, triangle_color = :lightblue)
tri = triangulate(points)
ax, tr = triplot(f[1, 2], tri, show_points = true)
f
С помощью triplot можно визуализировать призрачные ребра, окружающие границу.
using CairoMakie
using DelaunayTriangulation
n = 20
angles = range(0, 2pi, length = n+1)[1:end-1]
x = [cos.(angles); 2 .* cos.(angles .+ pi/n)]
y = [sin.(angles); 2 .* sin.(angles .+ pi/n)]
inner = [n:-1:1; n] # внутренняя часть по часовой стрелке
outer = [(n+1):(2n); n+1] # внешняя часть против часовой стрелки
boundary_nodes = [[outer], [inner]]
points = [x'; y']
tri = triangulate(points; boundary_nodes = boundary_nodes)
f, ax, tr = triplot(tri; show_ghost_edges = true, show_points = true)
f
Можно также выделить ограниченные ребра и отобразить выпуклую оболочку, что особенно полезно, когда триангуляция перестает быть выпуклой.
using CairoMakie
using DelaunayTriangulation
using Random
Random.seed!(1234)
outer = [
(0.0,0.0),(2.0,1.0),(4.0,0.0),
(6.0,2.0),(2.0,3.0),(3.0,4.0),
(6.0,6.0),(0.0,6.0),(0.0,0.0)
]
inner = [
(1.0,5.0),(2.0,4.0),(1.01,1.01),
(1.0,1.0),(0.99,1.01),(1.0,5.0)
]
boundary_points = [[outer], [inner]]
boundary_nodes, points = convert_boundary_points_to_indices(boundary_points)
tri = triangulate(points; boundary_nodes = boundary_nodes)
refine!(tri; max_area=1e-3*get_area(tri))
f, ax, tr = triplot(tri, show_constrained_edges = true, constrained_edge_linewidth = 4, show_convex_hull = true)
f
Атрибуты
bounding_box
Значение по умолчанию: automatic
задает ограничивающий прямоугольник для усечения фантомных ребер; это может быть Rect2 (или BBox) либо кортеж вида (xmin, xmax, ymin, ymax). По умолчанию прямоугольник задается в виде [a - eΔx, b + eΔx] × [c - eΔy, d + eΔy], где e — это ghost_edge_extension_factor, Δx = b - a и Δy = d - c — длины сторон прямоугольника, а [a, b] × [c, d] — ограничивающий прямоугольник точек триангуляции.
constrained_edge_linestyle
Значение по умолчанию: @inherit linestyle
задает стиль линии ограниченных ребер.
constrained_edge_linewidth
Значение по умолчанию: @inherit linewidth
задает толщину ограниченных ребер.
ghost_edge_extension_factor
Значение по умолчанию: 0.1
задает коэффициент продления для прямоугольника, на который продлеваются внешние фантомные ребра.
recompute_centers
Значение по умолчанию: false
определяет, следует ли пересчитывать репрезентативные точки для ориентации фантомных ребер. Обратите внимание, что при этом tri.representative_point_list изменяется напрямую.
show_constrained_edges
Значение по умолчанию: false
определяет, следует ли строить ограниченные ребра.