Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > HTML и CSS
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2024, 14:32   #41
MakarovDs
Форумчанин
 
Аватар для MakarovDs
 
Регистрация: 10.01.2020
Сообщений: 377
По умолчанию

Вот код с возможностью конвертировать модель в blender:

КОД


Последний раз редактировалось MakarovDs; 10.09.2024 в 14:37.
MakarovDs вне форума Ответить с цитированием
Старый 10.09.2024, 15:03   #42
MakarovDs
Форумчанин
 
Аватар для MakarovDs
 
Регистрация: 10.01.2020
Сообщений: 377
По умолчанию

Вот так же для создания случайной карты пещер:

Код:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from skimage import measure
import os

def generate_fractal_field(shape, min_length, angle, scale):
    array = np.zeros(shape, dtype=float)
    center = np.array(shape) // 2
    length = min(shape) // 2
    draw_fractal(center, length, min_length, angle, array, scale)
    return array

def draw_fractal(start, length, min_length, angle, array, scale):
    if length > min_length:
        end = start + length * np.array([np.cos(angle), np.sin(angle), np.sin(angle)])
        num_points = int(length * scale)
        for i in range(num_points):
            t = i / num_points
            point = start + t * (end - start)
            point = np.round(point).astype(int)
            if np.all(point >= 0) and np.all(point < np.array(array.shape)):
                array[tuple(point)] = 1
        
        # Рекурсивный вызов для левой и правой ветвей
        draw_fractal(end, length * 0.75, min_length, angle - np.pi / 4, array, scale)
        draw_fractal(end, length * 0.75, min_length, angle + np.pi / 1, array, scale)

def save_obj(vertices, edges, filename):
    with open(filename, 'w') as f:
        for vertex in vertices:
            f.write(f"v {vertex[0]} {vertex[1]} {vertex[2]}\n")
        for edge in edges:
            f.write(f"l {edge[0]+1} {edge[1]+1}\n")  # OBJ индексы начинаются с 1

def generate_texture(vertices, filename):
    # Generate a simple texture image (you can customize this to your liking)
    texture_size = 256
    texture_data = np.zeros((texture_size, texture_size, 3), dtype=np.uint8)
    for i in range(texture_size):
        for j in range(texture_size):
            texture_data[i, j, :] = (i % 2 * 255, j % 2 * 255, 0)  # Simple checkerboard pattern
    plt.imsave(filename, texture_data)

def on_key(event, vertices, edges):
    if event.key == 'r':
        desktop_path = os.path.join(os.path.expanduser("~"), "Desktop", "fractal.obj")
        texture_path = os.path.join(os.path.expanduser("~"), "Desktop", "fractal.png")
        save_obj(vertices, edges, desktop_path)
        generate_texture(vertices, texture_path)
        print(f"OBJ файл сохранен на рабочем столе как 'fractal.obj'")
        print(f"Текстура сохранена на рабочем столе как 'fractal.png'")

# Параметры
shape = (64, 64, 64)  # Размеры 3D массива
scale = 2  # Масштабирование координат для массива
min_length = 2
angle = np.pi / 2

# Генерация 3D-поля
fractal_field = generate_fractal_field(shape, min_length, angle, scale)

# Создание изосурфейса
verts, faces, _, _ = measure.marching_cubes(fractal_field, level=0.5)

# Визуализация
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_trisurf(verts[:, 0], verts[:, 1], faces, verts[:, 2], color='r', alpha=0.5)
fig.canvas.mpl_connect('key_press_event', lambda event: on_key(event, verts, faces))
plt.show()
MakarovDs вне форума Ответить с цитированием
Старый 11.09.2024, 15:29   #43
MakarovDs
Форумчанин
 
Аватар для MakarovDs
 
Регистрация: 10.01.2020
Сообщений: 377
По умолчанию

Попытался сделать тоже самое но так для карты пещер, и по моему получилось неплохо:

Вот код

MakarovDs вне форума Ответить с цитированием
Старый 11.09.2024, 16:14   #44
MakarovDs
Форумчанин
 
Аватар для MakarovDs
 
Регистрация: 10.01.2020
Сообщений: 377
По умолчанию

Вот наконец-то сделал нормальное сохранение:

Вот код

MakarovDs вне форума Ответить с цитированием
Старый 11.09.2024, 19:00   #45
MakarovDs
Форумчанин
 
Аватар для MakarovDs
 
Регистрация: 10.01.2020
Сообщений: 377
По умолчанию

Вот теперь сделал код для конвертирования дерева фрактала из линий в OBJ:

Вот код

MakarovDs вне форума Ответить с цитированием
Старый 11.09.2024, 19:53   #46
MakarovDs
Форумчанин
 
Аватар для MakarovDs
 
Регистрация: 10.01.2020
Сообщений: 377
По умолчанию

Вот теперь сделал генерацию изурфейсом правда фрактал видеть весь мы не можем в силу его огромности но скоро я это исправлю:

Вот код


Последний раз редактировалось MakarovDs; 11.09.2024 в 20:08.
MakarovDs вне форума Ответить с цитированием
Старый 12.09.2024, 00:10   #47
сфинкс
Участник клуба
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 1,027
По умолчанию

Какой-нибудь онлайн компилятор анимирует
в прямом эфире?

Знаю trinket.io да не принимает

Ссылки ниже ведут на фракталы онлайн

Есть ли анимационные кубики как в другой теме?

Специально ничего не заказываю
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую

Последний раз редактировалось сфинкс; 12.09.2024 в 15:42.
сфинкс вне форума Ответить с цитированием
Старый 12.09.2024, 14:48   #48
MakarovDs
Форумчанин
 
Аватар для MakarovDs
 
Регистрация: 10.01.2020
Сообщений: 377
По умолчанию

Цитата:
Сообщение от сфинкс Посмотреть сообщение
Какой-нибудь онлайн компилятор анимирует
в прямом эфире?

Знаю trinket.io да не принимает
Я могу переписать код на Babylon.js.

Вот что у меня получилось



Не комильфо... И это исправимо

Вот ВТОРАЯ ВЕРСИЯ



Теперь кул... Хотя может быть кто ещё до меня писал код под фрактал на Babylon'e но хочется верить что я первый! Любопытства ради создал тему на форуме babylon'a...

Последний раз редактировалось MakarovDs; 12.09.2024 в 15:55.
MakarovDs вне форума Ответить с цитированием
Старый 12.09.2024, 19:47   #49
MakarovDs
Форумчанин
 
Аватар для MakarovDs
 
Регистрация: 10.01.2020
Сообщений: 377
По умолчанию

Цитата:
Сообщение от сфинкс Посмотреть сообщение
Ссылки ниже ведут на фракталы онлайн

Есть ли анимационные кубики как в другой теме?

Специально ничего не заказываю
Вот те самые "анимационные кубики" но предупреждаю будет лагать.

Ссылка


Последний раз редактировалось MakarovDs; 12.09.2024 в 20:05.
MakarovDs вне форума Ответить с цитированием
Старый 18.09.2024, 02:40   #50
MallSerg
 
Аватар для MallSerg
 
Регистрация: 17.08.2024
Сообщений: 9
По умолчанию

На шейдертои есть куча примеров реализации фракталов можно подсмотреть
https://www.shadertoy.com/results?query=Fractal
MallSerg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите с генератором слов Мой повелитель Общие вопросы C/C++ 6 27.02.2016 23:46
Зарубежные микроконтроллеры с встроенным ШИМ-генератором MyLastHit Компьютерное железо 6 22.10.2013 14:33
написание генератора фракталов Жюлиа kyzmich2370 Visual C++ 1 06.11.2012 09:57
Помогите с генератором чисел на Pascal vadmaruschak Помощь студентам 6 13.09.2009 17:06
Игры фракталов на VB Kail Свободное общение 1 29.05.2009 09:30