#include "fiko/sahne/kutuk_hesap.hpp" #include "fiko_test.hpp" using namespace fiko; FIKO_TEST(kutuk_sirala_buyukten_kucuge) { const Vec3f s = kutukSirala({3, 10, 5}); FIKO_YAKIN(s.x, 10.0f, 1e-5f); FIKO_YAKIN(s.y, 5.0f, 1e-5f); FIKO_YAKIN(s.z, 3.0f, 1e-5f); // Negatifler mutlak deger olur. const Vec3f n = kutukSirala({-7, 2, -1}); FIKO_YAKIN(n.x, 7.0f, 1e-5f); FIKO_YAKIN(n.y, 2.0f, 1e-5f); FIKO_YAKIN(n.z, 1.0f, 1e-5f); } FIKO_TEST(kutuk_eksen_hizali_olcek) { Aabbf s; s.asgari = {0, 0, 0}; s.azami = {2, 4, 1}; const Vec3f e = kutukEksenHizali(s, {1, 1, 1}); FIKO_YAKIN(e.x, 4.0f, 1e-5f); FIKO_YAKIN(e.y, 2.0f, 1e-5f); FIKO_YAKIN(e.z, 1.0f, 1e-5f); const Vec3f o = kutukEksenHizali(s, {2, 2, 2}); FIKO_YAKIN(o.x, 8.0f, 1e-5f); } FIKO_TEST(kutuk_agirlik_kg) { // 1.000.000 mm3 = 1000 cm3, aluminyum 2.71 g/cm3 -> 2.71 kg FIKO_YAKIN(kutukAgirlikKg(1'000'000.0, 2.71), 2.71, 1e-9); // Celik 7.85, 2.000.000 mm3 -> 15.7 kg FIKO_YAKIN(kutukAgirlikKg(2'000'000.0, 7.85), 15.7, 1e-9); } FIKO_TEST(kutuk_obb_eksen_hizali_kutu) { // Eksen-hizali 6x4x2 kutu kosleri: OBB, AABB ile ayni sonucu vermeli. std::vector n; for (int i = 0; i < 8; ++i) n.push_back({(i & 1) ? 6.0f : 0.0f, (i & 2) ? 4.0f : 0.0f, (i & 4) ? 2.0f : 0.0f}); const Vec3f e = kutukObb(n, {1, 1, 1}); FIKO_YAKIN(e.x, 6.0f, 1e-3f); FIKO_YAKIN(e.y, 4.0f, 1e-3f); FIKO_YAKIN(e.z, 2.0f, 1e-3f); } FIKO_TEST(kutuk_obb_bos) { const Vec3f e = kutukObb({}, {1, 1, 1}); FIKO_YAKIN(e.x, 0.0f, 1e-9f); FIKO_YAKIN(e.y, 0.0f, 1e-9f); FIKO_YAKIN(e.z, 0.0f, 1e-9f); }