“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.

#konstrukcija.py
# Instalacija potrebnih zavisnosti:python3 -m pip install numpy trimesh
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.py
# Instalacija potrebnih zavisnosti:python3 -m pip install numpy trimesh
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'")

#forma.py
# Instalacija potrebnih zavisnosti:python3 -m pip install numpy trimesh
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 evo i prethodnih neuspelih programa:





