52 const std::array<float, kNumReverbOctaveBands>& absorption_coefficients,
53 float scattering_coefficient,
54 std::function<
float()> random_number_generator)
55 : scattering_coefficient_(scattering_coefficient),
56 random_number_generator_(std::move(random_number_generator)) {
57 for (
size_t i = 0; i < kNumReverbOctaveBands; ++i) {
58 reflection_coefficients_[i] = 1.0f - absorption_coefficients[i];
59 CHECK(reflection_coefficients_[i] >= 0.0f &&
60 reflection_coefficients_[i] <= 1.0f);
62 CHECK(scattering_coefficient_ >= 0.0f && scattering_coefficient_ <= 1.0f);
71 AcousticRay Reflect(
const AcousticRay& incident_ray)
const;
88 void ReflectDiffuseRain(
const AcousticRay& incident_ray,
89 const AcousticRay& reference_reflected_ray,
90 const Eigen::Vector3f& listener_position,
92 AcousticRay* diffuse_rain_ray)
const;
95 std::array<float, kNumReverbOctaveBands> reflection_coefficients_;
96 const float scattering_coefficient_;
99 std::function<float()> random_number_generator_;