Zome kupola sa pomerenim centrom je geometrijska struktura zasnovana na pravilnim spiralnim linijama (zome linijama), pri čemu osnova kupole ostaje fiksirana u centru koordinatnog sistema — tačno u tački (0, 0) u ravni osnove. Za razliku od standardne zome kupole, kod koje se svi spiralni elementi konvergiraju ka centralnoj tački koja se nalazi tačno iznad osnove (simetrična vertikala), u ovoj varijanti vrh kupole se pomera horizontalno za zadatu vrednost center_offset
.
Ovaj pomak vrha znači da se geometrijski centar kupole ne nalazi više direktno iznad baze, već se struktura „naginje“ ka zadatom pravcu. Spirale i strukturalni elementi koji čine mrežu kupole sada opisuju zakrivljene linije koje se prilagođavaju novom vrhu, što stvara dinamičniji i vizuelno izražajniji oblik.
Ovakva kupola više nije radijalno simetrična oko svoje vertikalne ose, već ima blago deformisan oblik u pravcu pomeranja centra, što može imati funkcionalne ili estetske prednosti — na primer u arhitektonskim rešenjima koja zahtevaju usmeravanje svetla, otvaranje pogleda ili specifičan nagib prema određenoj tački u prostoru.

Ova zome kupola ima bazu fiksiranu u koordinatnom početku (0,0)
, dok se vrh kupole pomera horizontalno za vektor $$\vec{c} = (c_x, c_y)$$. Zbog tog pomeranja, osna simetrija se narušava, a dužine rebara i njihovi pravci se računaju u odnosu na novu poziciju vrha.
Standardna dužina rebra u savršeno simetričnoj kupoli, kada se koristi helikoidalna konstrukcija sa n
spirala i ukupnom visinom h
, računa se kao:
$$ \ell_{\text{rib}} = \sqrt{ \left( \frac{d \pi}{4} \right)^2 + h^2 } $$
Kada se uvede pomeranje centra vrha kupole za vektor:
$$ \vec{c} = (c_x, c_y) $$
ono utiče na horizontalni položaj svake tačke spirale u visinskoj ravni z
tako da nova pozicija postaje:
$$ \vec{r}_{\text{spiral}}(z) = \vec{r}_0(z) + \left( \frac{z}{h} \right) \vec{c} $$
Objašnjenje formula:
- $$ \ell_{\text{rib}} = \text{dužina rebra između dva segmenta spirale} $$
- $$ d = \text{prečnik kupole u osnovi} $$
- $$ h = \text{visina kupole} $$
- $$ \vec{c} = (c_x, c_y) = \text{horizontalni pomak vrha kupole u odnosu na bazu} $$
- $$ \vec{r}_0(z) = \text{pozicija tačke spirale bez deformacije u visini } z $$
- $$ \vec{r}_{\text{spiral}}(z) = \text{pozicija tačke spirale sa deformacijom} $$
Ovaj model omogućava zome kupole sa nagnutim vrhom, što daje izraženiji vizuelni efekat i funkcionalnu asimetriju u konstrukciji.

Program
Opis ponašanja programa, korak po korak:
1. Parametri konstrukcije kupole
n
: broj spirala (npr. 24)segs
: broj segmenata u svakoj spirali (npr. 24)d
: prečnik osnove kupoleh
: visina vrha kupolethickness
: debljina „žica“ (cilindara)center_offset
: vektor pomeraja vrha kupole (npr.[1.0, 0.0]
znači pomeraj 1 jedinicu udesno)
2. Funkcija generate_spiral(...)
- Generiše tačke spirale koje se dižu od osnove do vrha kupole.
- Svaka tačka se računa u odnosu na pomereni centar kupole: pythonCopyEdit
x = sin(...) * d/4 + sin(beta)*d/4 + center_offset[0] * (j / segs) y = cos(...) * d/4 + cos(beta)*d/4 + center_offset[1] * (j / segs)
➤ Vidiš dacenter_offset
deluje postepeno duž visine kupole:- Na dnu je 0,
- Na vrhu ima pun efekat (
j/segs = 1
), - Čime se model pomera u „kosinu“.
3. Funkcija cylinder_between_points(p1, p2, ...)
- Između svaka dva uzastopna vrha spirale generiše se cilindar koji vizuelno čini deo žičane konstrukcije.
4. Glavna funkcija generate_mesh(...)
- Poziva spiralne generatore (desne i leve spirale),
- Kombinuje ih u jedan 3D mesh,
- Spaja sve cilindre u jednu mrežu sa tačkama (
verts
) i trouglastim površinama (faces
).
5. Izvoz rezultata
- Na kraju, rezultat se izvozi u
.ply
i.stl
format: pythonCopyEditmesh.export("helix_zome_ogledalo.ply") mesh.export("helix_zome_ogledalo.stl")
Efekat pomerenog centra (center_offset
):
- Ako je
center_offset = [0, 0]
⇒ savršena zome kupola. - Ako je
center_offset = [1, 0]
⇒ vrh kupole je pomeren udesno, spirale više nisu simetrične. - Možeš koristiti i
[-1, 0]
,[0, 1]
,[0.5, 0.5]
itd. za drugačije deformacije.
Vizuelizacija
- Dobijeni
.stl
i.ply
fajlovi mogu se otvoriti u programima kao što su:- MeshLab
- Blender
- FreeCAD
- Fusion 360
- ili web pregledači za 3D modele
Programski kod
Naziv fajla: asimetricna_zome_kupola.py
import numpy as np import trimesh from math import sin, cos, pi def rotation_matrix(v1, v2): a = v1 / np.linalg.norm(v1) b = v2 / np.linalg.norm(v2) v = np.cross(a, b) dot = np.dot(a, b) if np.allclose(dot, 1): return np.eye(3) if np.allclose(dot, -1): return -np.eye(3) s = np.linalg.norm(v) km = np.array([[ 0, -v[2], v[1]], [ v[2], 0, -v[0]], [-v[1], v[0], 0]]) return np.eye(3) + km + (km @ km) * ((1 - dot) / (s*s)) def cylinder_between_points(p1, p2, radius=0.01, sections=12): vec = p2 - p1 length = np.linalg.norm(vec) if length < 1e-6: return np.array([]), np.array([]) dir = vec / length angles = np.linspace(0, 2*pi, sections, endpoint=False) circle = np.stack([np.cos(angles)*radius, np.sin(angles)*radius, np.zeros_like(angles)], axis=1) base = circle top = circle + np.array([0, 0, length]) verts = np.vstack([base, top]) R = rotation_matrix(np.array([0,0,1]), dir) verts = verts @ R.T + p1 faces = [] n = sections for i in range(n): j = (i+1) % n faces += [[i, j, j+n], [i, j+n, i+n]] return verts, np.array(faces) def generate_spiral(n, segs, d, h, direction, center_offset=np.array([0.0, 0.0])): spirals = [] for i in range(n): beta = 2 * pi * i / n spiral = [] for j in range(segs + 1): alpha = pi * j / segs theta = alpha if direction == 1 else -alpha # Linearni pomak centra zavisno od visine alpha (od 0 na dnu do 1 na vrhu) offset_x = center_offset[0] * (alpha / pi) offset_y = center_offset[1] * (alpha / pi) x = sin(theta + beta) * d/4 + sin(beta)*d/4 + offset_x y = cos(theta + beta) * d/4 + cos(beta)*d/4 + offset_y z = (alpha/pi) * h spiral.append([x, y, z]) spirals.append(np.array(spiral)) return spirals def generate_mesh(n, segs, d, h, thickness, center_offset): verts_list, faces_list = [], [] offset = 0 spirals_right = generate_spiral(n, segs, d, h, direction=1, center_offset=center_offset) for spiral in spirals_right: for j in range(segs): p1, p2 = spiral[j], spiral[j+1] v, f = cylinder_between_points(p1, p2, thickness) if len(v): verts_list.append(v) faces_list.append(f + offset) offset += len(v) spirals_left = generate_spiral(n, segs, d, h, direction=-1, center_offset=center_offset) for spiral in spirals_left: for j in range(segs): p1, p2 = spiral[j], spiral[j+1] v, f = cylinder_between_points(p1, p2, thickness) if len(v): verts_list.append(v) faces_list.append(f + offset) offset += len(v) return np.vstack(verts_list), np.vstack(faces_list) if __name__ == "__main__": n = 24 # broj spirala po smeru segs = 24 # broj segmenata po spirali d = 8.0 # prečnik kupole h = 3 # visina kupole thickness = 0.01 # Pomak centra kupole u X i Y na vrhu kupole; osnova je na (0,0) center_offset = np.array([3, 0.0]) # pomeraj desno za 0.5 jedinica verts, faces = generate_mesh(n, segs, d, h, thickness, center_offset) mesh = trimesh.Trimesh(vertices=verts, faces=faces, process=False) mesh.export("helix_zome_offset_center.ply") mesh.export("helix_zome_offset_center.stl") print("✅ Izvezeni: helix_zome_offset_center.ply, helix_zome_offset_center.stl")
Reference
Naučni radovi & članci
- „Analysis on asymmetric aberration of special domes“
- De Wen Cheng i saradnici (2006, Optical Technique) analiziraju asimetrične optičke kupole (dakle deformacije kupolne površine koje uvode astigmatizam, koma i druge aberacije) Koncept “asimetrične kupole” nalazi primenu i u optici, što može biti korisno kao analog za geometrijsku deformaciju.
https://pure.bit.edu.cn/en/publications/analysis-on-asymmetric-aberration-of-special-domes
- De Wen Cheng i saradnici (2006, Optical Technique) analiziraju asimetrične optičke kupole (dakle deformacije kupolne površine koje uvode astigmatizam, koma i druge aberacije) Koncept “asimetrične kupole” nalazi primenu i u optici, što može biti korisno kao analog za geometrijsku deformaciju.
- MDPI: „In‑Depth Verification of a Numerical Model for an Axisymmetric RC Dome“ (2021)
- Iako fokusira se na simetrične kupole, metodologija numeričkog modeliranja može se prilagoditi i asimetričnom slučaju
https://www.mdpi.com/2073-8994/13/11/2152
- Iako fokusira se na simetrične kupole, metodologija numeričkog modeliranja može se prilagoditi i asimetričnom slučaju
- „The Influence of Dome Geometry on the Results of Modal and Buckling Analysis“ (2023, Appl. Sci.)
- Detaljno proučava kako razne geometrije kupole (uključujući asimetrične) utiču na modalne analize i propuste u konstrukciji – stoga predstavlja dobar tehnički temelj https://www.mdpi.com/2076-3417/13/4/2729
- „Analysis of Lightweight Structure Mesh Topology of Geodesic Domes“ (2024, Appl. Sci.)
- Iako se bavi geodetskim kupolama, diskusija o mesh topologiji i prilagodljivosti oblika je relevantna i za kromatske ili pomerene zome modele https://www.mdpi.com/2076-3417/14/1/132
📚 Knjige i reference o zome kupolama
- Paul Hildebrandt & Clark Richert, “Domes, Zomes, and Drop City” (2021) – radionička konferencija Bridges. Dotiče različite konstrukcije zome kupola, i iako prvenstveno simetrične, mogu poslužiti kao polazna osnova za razumevanje strukture https://en.wikipedia.org/wiki/Zome_%28architecture%29
- Steve Baer, “Zome Primer” (1970) – klasičan uvod u zome kupole i njihovu topologiju https://en.wikipedia.org/wiki/Zome_%28architecture%29