Документация Engee

Плоскости отсечения

Страница в процессе перевода.

Плоскость отсечения — это плоскость, которая делит пространство на две части: построенную и нет. Makie позволяет задавать до восьми плоскостей отсечения на уровне сцены или графика. Эти плоскости отсечения задаются в мировом пространстве, то есть они взаимодействуют с объектом графика после применения transform_func (например, масштабирования log) и матрицы model (например, translate!(plot, ...), rotate!(plot, ...) и scale!(plot, ...)). Они не взаимодействуют с графиком, если plot.space[] in (:pixel, :relative, :clip).

Примеры

using GLMakie
box = Rect3f(Point3f(-1), Vec3f(2))
sphere = Sphere(Point3f(0), 0.5f0)
points = [0.7f0 * Point3f(cos(x) * sin(y), cos(x) * cos(y), sin(x)) for x in 0:8 for y in 0:8]
clip_planes = [Plane3f(Point3f(0), Vec3f(-0.5, -1, 0))]

f = Figure(size = (900, 350))

# Скроем некоторые графики в прямоугольнике
Label(f[1, 1], "No clipping", tellwidth = false)
a = LScene(f[2, 1])

mesh!(a, box, color = :gray)
meshscatter!(a, points)
mesh!(a, sphere, color = :orange)

# Добавим плоскость отсечения в прямоугольник для отображения других графиков
Label(f[1, 2], "Plot based clipping", tellwidth = false)
a = LScene(f[2, 2])

# backlight = 1 обеспечивает двустороннее затенение
mesh!(a, Rect3f(Point3f(-1), Vec3f(2)), color = :gray, backlight = 1, clip_planes = clip_planes)
meshscatter!(a, points)
mesh!(a, sphere, color = :orange)

# При добавлении плоскости отсечения к сцене каждый график будет их наследовать
Label(f[1, 3], "Scene based clipping", tellwidth = false)
a = LScene(f[2, 3])
a.scene.theme[:clip_planes] = clip_planes

mesh!(a, Rect3f(Point3f(-1), Vec3f(2)), color = :gray, backlight = 1)
meshscatter!(a, points, backlight = 1)
mesh!(a, sphere, color = :orange, backlight = 1)

f
d9a331f