Добавить новость

Центр московского долголетия Марьино представил анонс мероприятий на 25 января

АльфаСтрахование оптимизирует операционный учет с Proceset

Из древесины кремлевской новогодней ели сделают сувениры для участников СВО

Выбирали люксовые машины: автоподставщики из Казани орудовали в Москве



Новости сегодня

Новости от TheMoneytizer

Доработать код с диаграммой Вороного, импортировав визуализацию в gmsh

есть такой код:
import numpy as np
import pyvista as pv
from scipy.spatial import Voronoi
import matplotlib.colors as mcolors

# Установка seed для воспроизводимости результатов
np.random.seed(14)
# Количество генераторов
n_points = 10
# Толщина стенок ячейки
wall_thickness = 1.0

def generate_points(n_points, cube_size=1.0):
"""
Генерация случайных точек внутри куба
:param n_points: количество точек
:param cube_size: размер куба
:return: массив точек размером (n_points, 3)
"""
return np.random.random((n_points, 3)) * cube_size

def create_voronoi_diagram(points):
"""
Создание диаграммы Вороного
:param points: массив точек
:return: объект Voronoi
"""
# Добавляем далекие точки для ограничения диаграммы
center = np.mean(points, axis=0)
radius = 2.0
extra_points = []
for d in range(3):
for sign in [-1, 1]:
point = np.copy(center)
point[d] = center[d] + radius * sign
extra_points.append(point)

points_with_extras = np.vstack((points, extra_points))
return Voronoi(points_with_extras)

def analyze_voronoi_cells(vor):
"""
Анализ ячеек Вороного
:param vor: объект Voronoi
"""
print("\nАнализ ячеек Вороного:")
for i, region in enumerate(vor.regions):
if len(region) > 0 and -1 not in region: # Пропускаем пустые регионы и регионы с бесконечными вершинами
print(f"\nЯчейка {i}:")
print("Вершины:")
vertices = vor.vertices[region]
for j, vertex in enumerate(vertices):
print(f" Вершина {j}: ({vertex[0]:.3f}, {vertex[1]:.3f}, {vertex[2]:.3f})")

# Проверка пересечения с границами куба
if np.any(vertices < 0) or np.any(vertices > 1):
print(" Ячейка пересекает границы куба")

def visualize_voronoi_3d(vor, points, wall_thickness=1.0):
"""
Визуализация 3D диаграммы Вороного
:param vor: объект Voronoi
:param points: исходные точки
:param wall_thickness: толщина стенок ячеек (float, по умолчанию 1.0)
"""
# Создаем плоттер
plotter = pv.Plotter()

# Создаем куб
cube = pv.Box(bounds=(0, 1, 0, 1, 0, 1))
plotter.add_mesh(cube, style='wireframe', color='black', line_width=2)

# Добавляем исходные точки
point_cloud = pv.PolyData(points)
plotter.add_mesh(point_cloud, color='red', point_size=10, render_points_as_spheres=True)

# Добавляем ячейки Вороного
colors = list(mcolors.TABLEAU_COLORS.values())
for i, region in enumerate(vor.regions):
if len(region) > 0 and -1 not in region: # Пропускаем пустые регионы и регионы с бесконечными вершинами
vertices = vor.vertices[region]
# Создаем выпуклую оболочку для ячейки
cell = pv.PolyData(vertices).delaunay_3d()
# Обрезаем ячейку по границам куба
cell = cell.clip_box((0, 1, 0, 1, 0, 1), invert=False)
if cell.n_points > 0: # Проверяем, осталась ли ячейка после обрезки
# Добавляем ячейку с случайным цветом и прозрачностью
plotter.add_mesh(cell, color=colors[i % len(colors)], opacity=0.3)
# Добавляем каркас ячейки с заданной толщиной
edges = cell.extract_feature_edges()
plotter.add_mesh(edges, color='black', line_width=wall_thickness)

# Настройка камеры и отображение
plotter.camera_position = 'iso'
plotter.show()

def main():
# Генерация точек
points = generate_points(n_points)

# Создание диаграммы Вороного
vor = create_voronoi_diagram(points)

# Анализ ячеек
analyze_voronoi_cells(vor)

# Визуализация
visualize_voronoi_3d(vor, points, wall_thickness)

if __name__ == "__main__":
main()

надо сделать так чтобы визуализация этого кода была в gmsh

Читайте на 123ru.net


Новости 24/7 DirectAdvert - доход для вашего сайта



Частные объявления в Вашем городе, в Вашем регионе и в России



Smi24.net — ежеминутные новости с ежедневным архивом. Только у нас — все главные новости дня без политической цензуры. "123 Новости" — абсолютно все точки зрения, трезвая аналитика, цивилизованные споры и обсуждения без взаимных обвинений и оскорблений. Помните, что не у всех точка зрения совпадает с Вашей. Уважайте мнение других, даже если Вы отстаиваете свой взгляд и свою позицию. Smi24.net — облегчённая версия старейшего обозревателя новостей 123ru.net. Мы не навязываем Вам своё видение, мы даём Вам срез событий дня без цензуры и без купюр. Новости, какие они есть —онлайн с поминутным архивом по всем городам и регионам России, Украины, Белоруссии и Абхазии. Smi24.net — живые новости в живом эфире! Быстрый поиск от Smi24.net — это не только возможность первым узнать, но и преимущество сообщить срочные новости мгновенно на любом языке мира и быть услышанным тут же. В любую минуту Вы можете добавить свою новость - здесь.




Новости от наших партнёров в Вашем городе

Ria.city

Более 400 млн поездок совершили пассажиры на МЦД-1

«Нефтехимик» дома забил два быстрых гола «Витязю»

Выбоины на нижегородском участке М-7 заделали после жалоб водителей

В ТиНАО завершено строительство второй очереди очистных сооружений «Кокошкино»

Музыкальные новости

СМИ: Добровольская успела составить завещание перед смертью

В Подмосковье сотрудники Росгвардии задержали мужчину, подозреваемого в краже алкогольной продукции из сетевого магазина

В Новосибирске родственница жертв убийства потребовала миллион с бойца ММА

Трамп может пересмотреть взгляды на исключительность США из-за соперничества с Россией

Новости России

Более 9 млн раз пассажиры узнали время прибытия транспорта с помощью куар-кодов на остановках

«Нефтехимик» дома забил два быстрых гола «Витязю»

«Очень востребовано»: в АТА заявили о явном преимуществе внутреннего туризма РФ

Из древесины кремлевской новогодней ели сделают сувениры для участников СВО

Экология в России и мире

Стильные зимние образы для неотразимых пышек

Российские туристы начали массово заболевать в Таиланде серьезной болезнью: в отелях находится много больных россиян

«А как заразилась-то, расскажи? Пятки раздвинула?»: ростовского врача-рентгенолога уволили из-за комментария под постом ВИЧ-инфицированного блогера

«День студента: интервью с младшим сотрудником филиала "Забайкальский" «ЛокоТех-Сервис»

Спорт в России и мире

Паула Бадоса одолела Кори Гауфф в четвертьфинале Открытого чемпионата Австралии.

Оскорбивший Джоковича австралийский журналист извинился перед ним

Русские девушки взяли реванш за финал Олимпиады-2024. Холодная месть Андреевой и Шнайдер в жаркой Австралии

Теннисист Джокович взял медицинский таймаут в матче с Алькарасом на AO

Moscow.media

Райан Гослинг - Восходящая Звезда Галактики "Звездных войн"!

На федеральных трассах в Новосибирской и Омской областях ограничено движение грузового и пассажирского транспорта

Звук, который дает преимущество: новая игровая гарнитура Bloody G565

«День студента: интервью с младшим сотрудником филиала "Забайкальский" компании «ЛокоТех-Сервис»











Топ новостей на этот час

Rss.plus






Более 9 млн раз пассажиры узнали время прибытия транспорта с помощью куар-кодов на остановках

Выбоины на нижегородском участке М-7 заделали после жалоб водителей

В ТиНАО завершено строительство второй очереди очистных сооружений «Кокошкино»

Конференцию о психолого-педагогической службе в образовании провели в Подмосковье