9 #ifndef SAL_CUBOIDROOM_H
10 #define SAL_CUBOIDROOM_H
15 #include "iirfilter.h"
17 #include "comparisonop.h"
36 const std::vector<mcl::IirFilter>& filter_prototypes) :
37 Room(filter_prototypes),
39 if ((
Int)filter_prototypes.size() !=
num_faces()) { ASSERT(
false); }
43 const mcl::IirFilter& filter_prototype) :
44 Room(std::vector<mcl::IirFilter>(6, filter_prototype)),
55 const mcl::IirFilter& filter_prototype) :
56 Room(std::vector<mcl::IirFilter>(6, filter_prototype)),
57 dimensions_(room_dimensions), origin_position_(origin_position) {}
59 virtual std::vector<mcl::Point>
61 const mcl::Point& destination)
const noexcept;
63 virtual std::vector<mcl::IirFilter>
65 const mcl::Point& mic_point)
const noexcept;
75 const mcl::
Int pz) const noexcept;
86 origin_position_ = position;
92 return dimensions_.norm();
125 mcl::Point ReflectionPoint(
const CuboidWallId face_index,
126 const mcl::Point& source_pos,
127 const mcl::Point& observation_pos)
const;
134 static mcl::Point IntersectionPoint(
const CuboidWallId wall_id,
136 const mcl::Point& observation_pos,
137 const mcl::Point& image_pos) noexcept;