“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'")

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 evo i prethodnih neuspelih programa:




