Floating Point (Kayan Nokta) Hassasiyeti
Rhino'da floating point sayı sistemi, hassasiyet limitleri ve büyük ölçekli modelleme sorunları.
Rhino, tüm CAD yazılımları gibi floating point (kayan nokta) sayı sistemi kullanır. Bu sistem, çok büyük veya çok küçük sayıları saklamak için kullanılır, ancak hassasiyet limitleri vardır. Bu makalede floating point hassasiyeti ve büyük ölçekli modelleme sorunlarını inceliyoruz.
Floating Point Nedir?
- IEEE 754 standardı (double precision, 64-bit)
- 15-17 digit hassasiyet (decimal digits)
- Max sayı: ~1.7 × 10^308
- Min sayı: ~2.2 × 10^-308
- Hassasiyet limiti: ~1 × 10^-15
- Örnek: 1234567890.123456789 → 1234567890.12346 (17 digit)
Büyük Ölçekli Modelleme Sorunları
- Model origin'den çok uzakta (>10 km) hassasiyet kaybı
- Viewport titremeleri (faraway objects)
- Boolean/Fillet işlemleri başarısız olur
- Snap/Osnap hassasiyeti azalır
- Örnek: 1000000.123 + 0.001 = 1000000.123 (kayıp!)
- McNeel tavsiyesi: Model origin yakınında çalış (<1 km)
Sorun Giderme
- Model'i origin (0,0,0) yakınına taşı (Move)
- GIS koordinatlarında offset kullan (lokal origin)
- Büyük projeler için bloklara böl (Grasshopper)
- WorldXY yerine CPlane kullan (relative coordinates)
- EarthAnchorPoint ile GIS koordinatları yönet
- Rhino.Inside.Revit ile BIM koordinatları senkronize et
Hassasiyet ve Tolerance İlişkisi
- Floating point hassasiyeti ≠ Rhino tolerance
- Tolerance: Kullanıcı tanımlı (0.01 mm default)
- Floating point: Sistem limiti (~10^-15)
- Büyük koordinatlarda tolerance etkisiz olabilir
- Örnek: 1000000 + 0.001 (tolerance) → kayıp!
- Çözüm: Model'i origin'e yakın tut
GIS ve Büyük Koordinatlar
- EarthAnchorPoint: GIS koordinatlarını sakla
- Model origin: Lokal koordinat (0,0,0)
- GIS export: EarthAnchorPoint offset ekle
- QGIS/ArcGIS uyumluluğu (WGS84, UTM)
- Rhino.Compute ile cloud processing
- McNeel tavsiyesi: Model < 10 km origin'den
Teknik Detaylar
- Double precision: 52-bit mantissa + 11-bit exponent
- Epsilon: En küçük sayı (2.220446e-16)
- Denormalized numbers: Çok küçük sayılar (slow)
- NaN (Not a Number): Geçersiz işlemler
- Infinity: Çok büyük sayılar
- McNeel OpenNURBS SDK: Hassasiyet detayları