// kurvatur.cpp — Dalga B: yuzey egrilik skaler alani (HIBRIT). // Yuz basi analitik egrilik (BRepLProp_SLProps, mesh-yogunluga DUYARSIZ) → // per-yuz skaler → ortak renkRampa (jet) GPU remap. Analiz-ozel gorsellestirme // kodu YOK (tek altyapi ilkesi). #include "fiko/analiz/analiz_hesap.hpp" #include #include #include "fiko/geometri/brep.hpp" namespace fiko::analiz { namespace { f64 olcuDeger(const geometri::KurvaturBilgi& kb, KurvaturOlcu olcu) { switch (olcu) { case KurvaturOlcu::Gauss: return kb.gauss; case KurvaturOlcu::Ortalama: return kb.ortalama; case KurvaturOlcu::MaksMutlak: return std::max(std::abs(kb.kMin), std::abs(kb.kMaks)); } return 0.0; } } // namespace std::vector kurvaturRapor(const geometri::BrepGovde& g, KurvaturOlcu olcu, f64& minCikti, f64& maxCikti) { std::vector r; minCikti = 0.0; maxCikti = 0.0; if (!g.gecerliMi()) return r; bool ilk = true; for (u32 ord = 1;; ++ord) { geometri::YuzBilgi yb; if (!g.yuzBilgi(ord, yb)) break; // ordinal bitti const geometri::KurvaturBilgi kb = geometri::yuzKurvaturMerkez(g, ord); if (!kb.gecerli) continue; // serbest/dejenere yuz → atla KurvaturYuz ky; ky.ordinal = ord; ky.deger = olcuDeger(kb, olcu); if (ilk) { minCikti = maxCikti = ky.deger; ilk = false; } else { minCikti = std::min(minCikti, ky.deger); maxCikti = std::max(maxCikti, ky.deger); } r.push_back(ky); } return r; } } // namespace fiko::analiz