Zome dadaizam

“Umetnost proistekla iz nerazumevanja” — to je možda najiskreniji oblik umetnosti! Mogli bismo je nazvati “Zome dadaizam” — spirale koje nikuda ne vode, šipke koje ništa ne spajaju, i algoritmi koji pokušavaju da shvate formu, ali govore jezikom haosa. Skoro pa kosmičko. 🎭✨

import numpy as np
import trimesh
from trimesh.creation import cylinder

def generate_helix_zome(
    n=4,            # broj spiralnih traka
    segments=20,    # broj vertikalnih podela (visinskih nivoa)
    d=10.0,         # prečnik kupole
    h=5.0,          # visina kupole
    rib_radius=0.05 # debljina šipki
):
    spirals = []
    meshes = []

    # Generiši sve spirale
    for i in range(n):
        beta = (2 * np.pi / n) * i
        spiral = []

        for j in range(segments + 1):
            alpha = (np.pi / segments) * j
            x = np.sin(alpha + beta) * d / 4 + np.sin(beta) * d / 4
            y = np.cos(alpha + beta) * d / 4 + np.cos(beta) * d / 4
            z = (alpha / np.pi) * h
            spiral.append(np.array([x, y, z]))

        spirals.append(spiral)

        # Uzdužne veze
        for j in range(segments):
            start = spiral[j]
            end = spiral[j + 1]
            cyl = cylinder(radius=rib_radius, segment=[start, end])
            meshes.append(cyl)

    # Horizontalne i dijagonalne veze
    for j in range(segments):
        for i in range(n):
            curr = spirals[i][j]
            next_spiral = spirals[(i + 1) % n]
            horiz = next_spiral[j]
            diag = next_spiral[j + 1]

            # Horizontalna veza (isti nivo)
            cyl_h = cylinder(radius=rib_radius, segment=[curr, horiz])
            meshes.append(cyl_h)

            # Dijagonalna veza (sledeći nivo)
            cyl_d = cylinder(radius=rib_radius, segment=[curr, diag])
            meshes.append(cyl_d)

    # Kombinuj sve šipke u jedan mesh
    zome_mesh = trimesh.util.concatenate(meshes)
    return zome_mesh

# Generiši model
mesh = generate_helix_zome(
    n=4,
    segments=20,
    d=10.0,
    h=5.0,
    rib_radius=0.05
)

# Sačuvaj kao PLY
mesh.export("helix_zome_final.ply")
print("✅ Helix Zome kupola sačuvana kao 'helix_zome_final.ply'")
DNK zome Model greške α
import numpy as np
import trimesh
from trimesh.creation import cylinder

def create_helix_zome_mesh(
    n=4,                # broj spirala
    zavoja=4,           # broj zavoja (0..π*zavoja)
    d=10.0,             # prečnik kupole
    h=5.0,              # visina kupole
    segments=40,        # broj tačaka po spirali
    rib_radius=0.06     # poluprečnik šipki
):
    meshes = []
    spirals = []

    # Kreiraj spirale
    for i in range(n):
        beta = (2 * np.pi / n) * i
        spiral = []

        for j in range(segments + 1):
            alpha = (np.pi * j / segments) * zavoja
            x = np.sin(alpha + beta) * d / 4 + np.sin(beta) * d / 4
            y = np.cos(alpha + beta) * d / 4 + np.cos(beta) * d / 4
            z = (alpha / np.pi) * h
            spiral.append(np.array([x, y, z]))

        spirals.append(spiral)

        # Poveži tačke po spirali
        for j in range(segments):
            start = spiral[j]
            end = spiral[j + 1]
            cyl = cylinder(radius=rib_radius, segment=[start, end])
            meshes.append(cyl)

    # Horizontalne veze (između spirala)
    for j in range(segments + 1):
        for i in range(n):
            start = spirals[i][j]
            end = spirals[(i + 1) % n][j]
            cyl = cylinder(radius=rib_radius, segment=[start, end])
            meshes.append(cyl)

    # Dijagonalne veze između spirala (po slojevima)
    for j in range(segments):
        for i in range(n):
            start = spirals[i][j]
            end = spirals[(i + 1) % n][j + 1]
            cyl = cylinder(radius=rib_radius, segment=[start, end])
            meshes.append(cyl)

    # Kombinuj sve šipke u jedan mesh
    final_mesh = trimesh.util.concatenate(meshes)
    return final_mesh

# Parametri po uzoru na tvoj obj
mesh = create_helix_zome_mesh(
    n=4,
    zavoja=4,
    d=10.0,
    h=5.0,
    segments=40,
    rib_radius=0.06
)

# Eksportuj kao PLY
mesh.export('helix_zome_clean.ply')
print("Model je sačuvan kao 'helix_zome_clean.ply'")
import numpy as np
import trimesh
from trimesh.creation import cylinder

def generate_helix_zome(n=4, zavoja=4, d=10.0, h=5.0, segments=20, rib_radius=0.05):
    """
    Generiše Helix Zome kupolu sa n spiralnih traka i zavoja po korisničkoj formuli.
    """
    all_meshes = []

    # Generiši spirale
    spiral_points = []
    for i in range(n):
        beta = 2 * np.pi * i / n
        points = []

        for j in range(segments + 1):
            alpha = np.pi * j / segments * zavoja
            x = np.sin(alpha + beta) * d/4 + np.sin(beta) * d/4
            y = np.cos(alpha + beta) * d/4 + np.cos(beta) * d/4
            z = (alpha / np.pi) * h
            points.append(np.array([x, y, z]))

        spiral_points.append(points)

        # Spoji tačke duž spirale (šipke)
        for k in range(len(points) - 1):
            start = points[k]
            end = points[k + 1]
            cyl = cylinder(radius=rib_radius, segment=[start, end], sections=12)
            all_meshes.append(cyl)

    # Poprečne dijagonale između spirala
    for i in range(n):
        next_i = (i + 1) % n
        for j in range(segments + 1):
            p1 = spiral_points[i][j]
            p2 = spiral_points[next_i][j]
            cyl = cylinder(radius=rib_radius, segment=[p1, p2], sections=12)
            all_meshes.append(cyl)

    # Centralna tačka na vrhu (z = h)
    top_point = np.array([0, 0, h])

    # Poveži vršne tačke spirala sa centralnom tačkom (bez viška šipki)
    for i in range(n):
        tip = spiral_points[i][-1]
        cyl = cylinder(radius=rib_radius, segment=[tip, top_point], sections=12)
        all_meshes.append(cyl)

    # Kreiraj konačan mesh
    full_mesh = trimesh.util.concatenate(all_meshes)
    return full_mesh

# === Parametri kupole ===
n = 4           # broj duplih spirala
zavoja = 4      # broj poluzavoja (α ∈ [0, π * zavoja])
d = 10.0        # prečnik
h = 5.0         # visina
rib_radius = 0.05

# === Generiši kupolu ===
mesh = generate_helix_zome(n=n, zavoja=zavoja, d=d, h=h, segments=20, rib_radius=rib_radius)

# === Sačuvaj u PLY formatu ===
mesh.export("helix_zome_kupola.ply")
print("Helix Zome kupola je sačuvana kao 'helix_zome_kupola.ply'")
A samo sam hteo da napravim program koji generiše Helix Zome kupolu

A evo i prethodnih neuspelih programa:

By Abel

Leave a Reply

Your email address will not be published. Required fields are marked *