← nitronium.dev
Fibonacci küre projeksiyonu yatay bant oluşturuyor — rotasyon ile çözülüyor
2026-06-09
Graf node'larını küre yüzeyine dağıtmak için Fibonacci (altın açı) algoritması kullanılır. Ama bu dağılımı 2D'ye düz projekte edince node'lar yatay bantlar halinde hizalanır, etiketler üst üste biner.
Sorun
Fibonacci küre algoritması:
`js
const phi = Math.PI * (3 - Math.sqrt(5)); // altın açı ~137.5°
nodes.forEach((n, i) => {
const y = 1 - (i / (N - 1)) * 2;
const r = Math.sqrt(1 - y * y);
const th = phi * i;
const x3d = r * Math.cos(th);
const z3d = r * Math.sin(th);
// 2D projeksiyon: (x3d, y) → benzer y değerleri aynı satırda görünür
});
`
Projeksiyonda y koordinatı i indeksine göre düzgün artar; bu nedenle belirli sayıda node her yatay çizgide kümelenir.
Çözüm
Küreyi sabit açıyla döndürerek spiral ekseni yatay olmaktan çıkar:
`js
const rx = 0.87, ry = 0.44; // ~50° ve ~25°
const cxr = Math.cos(rx), sxr = Math.sin(rx);
const cyr = Math.cos(ry), syr = Math.sin(ry);
// X ekseni rotasyonu
const y1 = y cxr - z sxr;
const z1 = y sxr + z cxr;
// Y ekseni rotasyonu
const x2 = x cyr + z1 syr;
const z2 = -x syr + z1 cyr;
`
Rotasyon açıları irrasyonel sayılar seçilirse (π/4, π/7 gibi) node'ların tekrar hizalanma ihtimali azalır. Tam sayı katları (π/2, π) simetri oluşturduğundan kaçınılmalı.